2013-08-26 34 views
11

Dưới đây là một bức tranh, do đó bạn có thể hiểu được những gì tôi muốn:Làm cách nào để căn chỉnh phần tử ở giữa và trên một phần tử khác trong bố cục tương đối?

enter image description here

Tôi có yếu tố màu xanh lá cây này đã được thiết lập trong cách bố trí tương đối của tôi, và những gì tôi muốn là để đưa một phần tử (một màu đen trong pic) ở trên nó để nó được tập trung chính xác ở giữa phần tử màu xanh lá cây.

Hãy nhớ rằng phần tử màu đen không có chiều rộng không đổi và chiều rộng lớn hơn màu xanh lá cây.

Có những thứ như android: layout_alignLeft và android: layout_alignRight sẽ hữu ích nếu tôi muốn nó căn trái hoặc phải, nhưng theo như tôi biết không có android: layout_alignCenter vì vậy tôi không biết cách thực hiện điều này điều ...

+0

thể trùng lặp của [Android alignCenter Layout tương đối từ cái nhìn khác] (http://stackoverflow.com/questions/5487864/android-relative-layout-aligncenter-from -another-view) – tir38

Trả lời

17

Như bạn đã nói, hãy đặt cả hai phần tử bên trong RelativeLayout.

Sau đó, thiết lập "center_horizontal" tài sản của cả hai yếu tố là true, và sau đó thiết lập các "dưới" tài sản của các yếu tố màu xanh lá cây để id của phần tử đen.

Dưới đây là ví dụ hoàn chỉnh:

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

    <View 
     android:id="@+id/view1" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:background="@color/Black" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view2" 
     android:layout_height="100dp" 
     android:layout_below="@+id/view1" 
     android:background="@color/Green" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

("center_vertical" là kinda không bắt buộc)

Hoặc đây, không phụ thuộc vào xem vị trí khác:

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

    <View 
     android:id="@+id/view1" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:background="@color/Black" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view2" 
     android:layout_width="40dp" 
     android:layout_height="100dp" 
     android:layout_below="@+id/view1" 
     android:layout_alignLeft="@+id/view1" 
     android:layout_alignRight="@+id/view1" 
     android:layout_marginLeft="30dp" 
     android:layout_marginRight="30dp" 
     android:background="@color/Green" /> 

</RelativeLayout> 

(Trong trường hợp này, các lề sẽ xác định chiều rộng Lượt xem thứ hai)

Đây là kết quả cuối cùng:

enter image description here

+1

Điều này là center_horizontal tập trung các yếu tố liên quan đến cha mẹ của chúng. Và tôi không muốn chúng ở trung tâm của bố mẹ, tôi chỉ muốn căn chỉnh phần tử màu đen ở giữa phần tử màu xanh bất kể vị trí của chúng trong bố mẹ. –

+2

Tôi đã cập nhật câu trả lời của tôi :) –

+0

Căn chỉnh tại một thời điểm sang phải và bên trái của smthng thực sự tuyệt vời, cảm ơn – OFFmind

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