2015-06-09 17 views
10

Ho due viste con la stessa elevazione una di fianco all'altra. Il mio comportamento voluto è che non proiettano un'ombra l'una sull'altra poiché hanno la stessa elevazione, tuttavia, ciò che sta accadendo è che la vista a sinistra getta un'ombra a destra. Non hanno le stesse dimensioni, quindi non posso metterli entrambi in un'altra vista e applicare un'elevazione a quella vista.Android: due viste con la stessa elevazione side-by-side

È questo il comportamento previsto? C'è un modo per aggirarlo?

Edit:

Ho appena ricreato con una vista più semplici, ecco il codice. Ho anche notato che ha il comportamento previsto se ho la vista direttamente nel layout e non la includo come ho fatto in questo esempio e come ho bisogno che funzioni.

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:background="@android:color/holo_green_dark"> 

    <LinearLayout 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:background="@android:color/holo_red_dark" 
     android:elevation="24dp"/> 

    <include layout="@layout/test"/> 

</LinearLayout> 

E qui è la comprendono:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:background="@android:color/holo_red_dark" 
     android:elevation="24dp"/> 

</LinearLayout> 

E lo screenshot:

http://i.imgur.com/bhm1nbI.png

+0

Si potrebbe desiderare di catturare uno screenshot degli effetti che si sta vedendo caricarlo da qualche parte e collegarlo alla domanda, oltre a fornire il layout che si sta utilizzando. – CommonsWare

+0

Siamo spiacenti per il ritardo, ho appena ricreato il problema utilizzando una vista più semplice. Funziona se non includo la vista, ma è così che sto usando la vista nel mio problema originale. –

+2

Se stai dicendo che '' è il tuo problema, allora sospetto che la soluzione sia di evitare il ''. Ad esempio, forse puoi creare un 'View' /' ViewGroup' personalizzato che ha le tue due viste. – CommonsWare

risposta

1

Vedere la gerarchia si dispone:

enter image description here

Quindi avete applicato l'elevazione a 1 e 3, che non sono fratelli. Apparentemente, se una vista è più alta nella gerarchia, allora dovrebbe gettare un'ombra, indipendentemente dal fatto che quelle viste abbiano la stessa elevazione o no.

Aveva applicato elevazione al 2 invece di 3 si non vedere l'effetto ombra.

Quindi, se basta cambiare la tua test.xml a questo:

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:elevation="24dp"> 

    <LinearLayout 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@android:color/holo_red_dark"/> 

</LinearLayout> 

Otterreste questo output:

enter image description here