2015-06-09 24 views
10

Mam dwa widoki z tą samą wysokością obok siebie. Moje pożądane zachowanie polega na tym, że nie będą rzucać cienia na siebie nawzajem, ponieważ mają tę samą wysokość, jednak to, co się dzieje, to widok po lewej stronie, rzucający cień po prawej stronie. Nie mają tego samego rozmiaru, więc nie mogę umieścić ich w innym widoku i zastosować do tego widoku elewacji.Android - dwa widoki z tą samą rzędną obok siebie

Czy to oczekiwane zachowanie? Czy istnieje sposób obejścia tego?

Edit:

Właśnie odtworzony z prostszych poglądów, oto kod. Zauważyłem również, że ma oczekiwane zachowanie, jeśli mam widok bezpośrednio w układzie i nie włączam go tak, jak to zrobiłem w tym przykładzie i gdy potrzebuję go do pracy.

<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> 

A oto to:

<?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> 

a zrzut ekranu:

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

+0

Możesz chcieć wykonać zrzut ekranu efektu że widzisz , prześlij go gdzieś i połącz z nim swoje pytanie, a także podaj układ, którego używasz. – CommonsWare

+0

Przepraszamy za opóźnienie. Po prostu odtworzyłem problem, korzystając z prostszego widoku. Działa, jeśli nie uwzględnię widoku, ale w ten sposób używam widoku w oryginalnym problemie. –

+2

Jeśli mówisz, że '' jest twoim problemem, to podejrzewam, że rozwiązaniem jest uniknięcie ''. Na przykład, możesz utworzyć niestandardowy widok "Widok"/"Widok grupy" zawierający dwa widoki. – CommonsWare

Odpowiedz

1

Patrz hierarchię mieć:

enter image description here

Zastosowałeś podniesienie do 1 i 3, które nie są rodzeństwem. Wygląda na to, że jeśli jeden widok jest wyższy w hierarchii, niż powinien rzucać cień, niezależnie od tego, czy te widoki mają taką samą wysokość, czy nie.

Jeśli zastosowałeś elewację do 2 zamiast 3, zobaczysz , a nie. Zobacz efekt cienia.

Więc jeśli po prostu zmienić test.xml do tego:

<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> 

Można by uzyskać ten wynik:

enter image description here