2009-09-30 61 views

Trả lời

27

Bạn có thể áp dụng một trung đến bất kỳ View, bao gồm một diện, bằng cách sử dụng thuộc tính XML android:. Layout_gravity". Bạn có thể muốn cung cấp cho nó giá trị 'trung tâm'

Bạn có thể tìm thấy một tài liệu tham khảo của thể giá trị cho tùy chọn này ở đây: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity

+2

AFAIK, layout_gravity chỉ dành cho LinearLayout, không dành cho bố cục tùy ý. – CommonsWare

+0

Như bạn đã đề cập layout_gravity chỉ dành cho LinearLayout những gì về RelativeLayout vì vì trong ứng dụng tôi muốn nhúng textview trên ImageView – Vicky

+0

tôi đã thử nó với relativelayout và theo ý kiến ​​của tôi nó hoạt động – ludwigm

131

BướC# 1: gói bất cứ điều gì bạn muốn tập trung vào màn hình trong một toàn màn hình RelativeLayout

BướC# 2

:. cho rằng quan điểm con (một trong những, mà bạn muốn căn giữa bên trong RelativeLayout) android:layout_centerInParent="true" thuộc tính.

+19

Điều này chỉ làm việc cho tôi khi tôi đặt thuộc tính android: layout_centerInParent = "true" vào Chế độ xem bên trong RelativeLayout. –

+1

Điều gì sẽ xảy ra nếu tôi muốn định vị nó ở trung tâm, nhưng di chuyển xuống nếu có nguy cơ chồng chéo với chế độ xem khác? –

+3

Bạn cần đặt 'android: layout_centerInParent =" true "' vào chế độ xem con, không phải là 'RelativeLayout'. Thuộc tính 'android: layout_ *' ảnh hưởng đến cách một vị trí được định vị và có kích thước trong bố cục của nó, không phải cách con của chế độ xem được định vị và kích thước trong đó. – Karu

17
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"> 
    <ProgressBar 
     android:id="@+id/ProgressBar01" 
     android:layout_centerInParent="true" 
     android:layout_width="wrap_content" 
     android:layout_gravity="center" 
     android:layout_height="wrap_content"></ProgressBar> 
    <TextView 
     android:layout_below="@id/ProgressBar01" 
     android:text="@string/please_wait_authenticating" 
     android:id="@+id/txtText" 
     android:paddingTop="30px" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"></TextView> 
</RelativeLayout> 
6

Nếu bạn muốn căn giữa một chế độ xem, hãy sử dụng chế độ xem này. Trong trường hợp này, TextView phải là khung nhìn thấp nhất trong XML của bạn bởi vì layout_height là match_parent.

<TextView 
    android:id="@+id/tv_to_be_centered" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:text="Some text" 
/> 
+0

Ông có nghĩa là đặt bố trí ở trung tâm, không đặt xem. –

+1

@IgorG. định vị bố cục và Chế độ xem giống nhau vì Giao diện * là Chế độ xem *. – FoamyGuy

+0

@Tim Tôi nghĩ bố cục giống với Chế độ xem hơn là Chế độ xem ... –

14

tôi đã có thể tập trung một cái nhìn sử dụng

android:layout_centerHorizontal="true" 

android:layout_centerVertical="true" 

params.

+2

Lưu ý rằng các thuộc tính đó chỉ hoạt động nếu chế độ xem được đề cập là (trực tiếp) bên trong 'RelativeLayout'. – Karu

+0

đây chính xác là những gì tôi cần! Cảm ơn – joshmmo

0

Thêm android: layout_centerInParent = "true" để yếu tố mà bạn muốn tập trung trong đầu RelativeLayout

0

Nó sẽ làm việc cho mã mà đôi khi cần cả hai thuộc tính

android:layout_gravity="center" 
android:layout_centerHorizontal="true" 
1

câu trả lời Cập nhật: Constraint Layout

Dường như xu hướng trong Android hiện nay là sử dụng bố cục Hạn chế. Mặc dù đủ đơn giản để căn giữa chế độ xem bằng cách sử dụng RelativeLayout (như các câu trả lời khác đã được hiển thị), các ConstraintLayout mạnh hơn so với RelativeLayout để bố cục phức tạp hơn. Vì vậy, nó là giá trị học tập làm thế nào để làm ngay bây giờ.

Để căn giữa chế độ xem, chỉ cần kéo tay cầm vào tất cả bốn mặt của phụ huynh.

enter image description here

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