2012-05-03 38 views
17

Đó là câu hỏi về bố cục Android. Dưới đây là những gì tôi háo hức muốn nhận được:Có cách nào để đặt chế độ xem hơi bên ngoài bố cục gốc không?

Layout

Dark-xám là một LinearLayout. Màu cam là layout X và sau đó là Green là FrameLayout. Tôi cần đặt màu xanh bên ngoài bố cục của nó - bố cục X. Cấu trúc phân cấp bố cục được mô tả không thể thay đổi được. Tùy chọn duy nhất là bố trí X - nó có thể là bất cứ điều gì bạn muốn.

Bất kỳ ý tưởng nào?

+0

Tôi ghét phải nói điều đó, nhưng cách duy nhất tôi có thể nghĩ là sử dụng FrameLayout để bao bọc mọi thứ, có màu xám đậm và màu da cam trong bố cục tuyến tính và sau đó bố trí màu xanh lá cây trên các bố cục khác. Xung đột với "Hệ thống phân cấp bố cục được mô tả của bạn không thể thay đổi". Chỉ vì tò mò, tại sao không thể? – Barak

+0

Tôi nghĩ bạn có thể chỉ định các giá trị âm cho lề. Bạn đã thử chưa Tôi nghĩ rằng nó hoạt động cho bố trí nơi bạn có thể có chồng chéo (hai đối tượng trên một canvas, ví dụ). Tôi không ở gần một biên tập viên nào, nếu không tôi sẽ tự mình thử nó. Tôi biết chắc chắn bạn có thể chồng lên nhau nếu toàn bộ bố cục của bạn là canvas, nhưng tôi không chắc chắn trong trường hợp của bạn. – Gophermofur

+0

@Barak: Về cơ bản nó là một bảng (hàng trong bảng) và trong một số trường hợp, tôi cần phải di chuyển một ô bên ngoài vị trí bình thường của nó, vì vậy bố cục Table/TableRow là duy nhất tôi có thể sử dụng. – agibalov

Trả lời

4

Bạn không thể đặt phần Màu xanh lá cây trong Bố cục X, vì nó không thể được vẽ bên ngoài bố mẹ.

Vì vậy, bạn nên triển khai RelativeLayout hoặc FrameLayout (Bố cục gốc) làm cha mẹ của tất cả các Chế độ xem này.

Và đặt Chế độ xem màu lục làm childView của Bố cục gốc.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="200dp" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/layout_dark_grey" 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_orange" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/layout_dark_grey" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/layout_green" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="300dp" > 
    </RelativeLayout> 

</RelativeLayout> 
+0

Tôi biết có nhiều cách để đạt được nó bằng cách sử dụng bố cục phù hợp hơn thay vì bố cục mà tôi sử dụng. Tôi vẫn tò mò nếu có một cách để làm điều đó trong trường hợp của tôi. – agibalov

29

định sử dụng -

android:clipChildren="false" 
android:clipToPadding="false" 

trong mọi cha mẹ xem con quý vị, 'lề trái' sau đó bạn đặt các quan điểm của bạn là tiêu cực, trong đó sẽ đưa xem con bạn ngoài xem phụ huynh và sẽ thậm chí không cắt chế độ xem.

+1

Lợi nhuận âm là người chiến thắng! – hellaandrew

+2

Phát ngay! Chúc mừng – AhmedW

+3

Dường như không hoạt động với tôi – Denny

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