2013-06-06 32 views
6

Có thể hiển thị chế độ xem đầu tiên trong LinearLayout chồng chéo thứ hai không?Chế độ xem đầu tiên ở trên/chồng chéo thứ hai trong LinearLayout

Tôi muốn bố trí quan điểm của tôi như vậy:

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

Nhưng tôi cần phải nhìn đầu tiên của tôi từ cách bố trí, firstTextView, được đặt trên đầu trang của (chồng chéo) secondTextView. Điều này có thể không? Tôi đang sử dụng LinearLayout vì tôi cũng đang chơi với các lề để có được một hiệu ứng chồng chéo.

+0

Tại sao bạn muốn nó đặt ở trên cùng? Bạn có nghĩa là trực tiếp bao gồm 'secondTextView' của bạn? – codeMagic

+0

@codeMagic Tôi đang đặt nó lên hàng đầu bởi vì "Tôi cũng đang chơi với các lề để có được hiệu ứng chồng chéo" – RileyE

+0

Vì vậy, bạn muốn lượt xem thứ hai nằm dưới và ở bên phải của chế độ xem đầu tiên? – Voicu

Trả lời

3

gì làm việc cho tôi và có lẽ sẽ làm việc cho bạn là:

  1. Đưa 2 TextView của bạn với RelativeLayout thay vì LinearLayout và đặt android: clipChildren = "false". Điều này sẽ ngăn chặn phần chồng chéo bị cắt bớt.
  2. Bố trí TextView thứ 2 bên dưới TextView đầu tiên
  3. Trong mã, hãy gọi hàm bringToFront() trên TextView đầu tiên. Theo mặc định, lượt xem văn bản đầu tiên được vẽ đầu tiên và sẽ ở bên dưới chế độ xem văn bản thứ hai. Gọi hàm bringToFront() sẽ thay đổi thứ tự đó.

Vì vậy, cách bố trí có thể là cái gì đó như thế này:

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

và:

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

Bạn không cần clipChildren. Nếu cả hai chế độ xem đều nằm trong cùng một bố cục, chúng có thể chồng lên nhau. Trong một bố cục tương đối, điều này được thực hiện mọi lúc. ClipChildren là để cho phép mọi thứ được vẽ bên ngoài bố cục tương đối mẹ. BringToFront cũng không cần thiết, thứ tự z được kiểm soát theo thứ tự trong tệp mà các khung nhìn được định nghĩa trong. –

2

Hoặc bạn có thể gắn với Bố cục tuyến tính, nhưng đặt RelativeLayout bên trong nó, khi còn nhỏ. Bạn có thể đặt TextView của mình với RelativeLayout, vì vậy chúng sẽ kế thừa các thuộc tính từ RelativeLayout. Sau đó, bạn vẫn có thể sử dụng LinearLayout cho các chế độ xem khác. http://developer.android.com/reference/android/widget/RelativeLayout.html

3

Nếu tất cả các bạn muốn là để chồng lên hai quan điểm theo chiều dọc, sau đó sử dụng XML này:

<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

Và chế độ xem đầu tiên vẫn dưới mức thứ hai! – RileyE

+0

Đăng mã Java của bạn chạm vào bố cục. – Voicu

+0

Tôi không cần mã Java để biết rằng chế độ xem thứ hai sẽ được phủ lên trên đầu chế độ xem đầu tiên. Tôi chỉ sử dụng một LayoutInflater cơ bản. – RileyE

0

Bằng cách chỉ định giá trị lợi nhuận "< 0" chúng ta có thể chồng lên nhau quan điểm. Nhưng bố cục tương đối là thích hợp hơn khi chúng ta cần o các khung nhìn chồng lên nhau.

Các vấn đề liên quan