2013-06-06 22 views
6

Czy można wyświetlić pierwszy widok w LinearLayout pokrywający się drugi?Pierwszy widok powyżej/zachodzenie drugiego w LinearLayout

Chciałbym układ moje poglądy tak:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_alignParentRight="true" > 

    <TextView 
     android:id="@+id/firstTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrapContent" /> 

    <TextView 
     android:id="@+id/secondTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Ale muszę mój pierwszy widok z układu, firstTextView, które mają być umieszczone na szczycie (nakładający) secondTextView. czy to możliwe? Używam LinearLayout, ponieważ gram również z marginesami, aby uzyskać nakładający się efekt.

+0

Dlaczego chcesz umieścić go na górze? Masz na myśli bezpośrednie zakrywanie swojego 'secondTextView'? – codeMagic

+0

@codeMagic Umieszczam go na wierzchu, ponieważ "Gram również z marginesami, aby uzyskać nakładający się efekt" – RileyE

+0

Czy chcesz, aby drugi widok był pod i na prawo od pierwszego widoku? – Voicu

Odpowiedz

3

Co pracował dla mnie i prawdopodobnie będzie pracować dla Ciebie jest następująca:

  1. Zawiń swoje 2 TextView z RelativeLayout zamiast LinearLayout i ustaw android: clipChildren = "false". Zapobiegnie to obcięciu części nakładającej się.
  2. Ułóż drugi tekstView poniżej pierwszego obiektu TextView
  3. W kodzie wywołaj metodę bringToFront() w pierwszym widoku tekstowym. Domyślnie pierwszy widok tekstowy jest narysowany jako pierwszy i będzie poniżej drugiego widoku tekstowego. Wywołanie metody bringToFront() spowoduje zmianę tej kolejności.

więc układ może być coś takiego:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:clipChildren="false"> 

<TextView 
    android:id="@+id/firstTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#00000000" 
    android:text="First View" /> 

<TextView 
    android:id="@+id/secondTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/firstTextView" 
    android:background="#00000000" 
    android:layout_marginTop="-13dp" 
    android:text="Second View"/> 
</RelativeLayout> 

oraz:

TextView firstTextView = (TextView)findViewById(R.id.firstTextView); 
firstTextView.bringToFront(); 
+2

Nie potrzebujesz clipChildren. Jeśli oba widoki są w tym samym układzie, mogą się nakładać. W układzie względnym robi się to cały czas. ClipChildren służy do tego, aby umożliwić rysowanie obiektów poza relatywnym układem nadrzędnym. BringToFront również nie jest potrzebny, kolejność z jest kontrolowana przez kolejność w pliku, w którym zdefiniowano widoki. –

3

Jeśli wszystko czego chcę, to zachodzą dwa widoki w pionie, a następnie użyć tego XML:

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

    <TextView 
     android:id="@+id/firstTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#00000000" 
     android:text="First View" /> 

    <TextView 
     android:id="@+id/secondTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#00000000" 
     android:layout_marginTop="-13dp" 
     android:text="Second View"/> 
</LinearLayout> 

enter image description here

+1

A pierwszy widok jest nadal poniżej sekundy! – RileyE

+0

Wyślij swój kod Java, który dotyka układu. – Voicu

+0

Nie potrzebuję kodu Java, aby wiedzieć, że drugi widok zostanie nałożony na pierwszy widok. Używam tylko podstawowego elementu LayoutInflater. – RileyE

0

Przypisując wartość marży "< 0" możemy pokrywać widoki. Ale układ względny jest lepszy, gdy potrzebujemy nakładających się widoków.