Câu trả lời:
Tôi nghĩ rằng bạn đang làm điều này: android:layout_width = "wrap_content"
Nếu đây là trường hợp, hãy làm điều này:android:layout_width = "match_parent"
Nói chung, android:gravity="right"
khác với android:layout_gravity="right"
.
Cái đầu tiên ảnh hưởng đến vị trí của chính văn bản trong Chế độ xem, vì vậy nếu bạn muốn nó được căn phải, thì layout_width=
nên "fill_parent"
hoặc "match_parent"
.
Cái thứ hai ảnh hưởng đến vị trí của Chế độ xem bên trong cha mẹ của nó, nói cách khác - căn chỉnh chính đối tượng (hộp chỉnh sửa hoặc chế độ xem văn bản) bên trong chế độ xem chính.
Giải pháp tốt hơn là giải pháp đơn giản nhất và giải pháp ít sửa đổi hơn trong hành vi mã của bạn .
Điều gì nếu bạn có thể giải quyết vấn đề này chỉ với 2 Thuộc tính trên TextView
?
Thay vì cần thay đổi LinearLayout
Thuộc tính của bạn mà có thể thay đổi hành vi của LinearLayout
trẻ em?
Sử dụng cách này, bạn không cần thay đổi LinearLayout
thuộc tính và hành vi, bạn chỉ cần thêm hai thuộc tính sau vào mục tiêu của mình TextView
:
android:gravity="right"
android:textAlignment="gravity"
Điều gì sẽ tốt hơn để chỉ thay đổi mục tiêu của bạn để giải quyết giải pháp của bạn thay vì có cơ hội gây ra một vấn đề khác trong tương lai, sửa đổi cha mục tiêu của bạn? nghĩ về nó :)
TextView
tài sản? - Bạn có thể kiểm tra tài sản từ tài liệu tham khảo tại đây: developer.android.com/reference/android/view/iêu
android:layout_gravity
được sử dụng để căn chỉnh chế độ xem văn bản theo bố cục cha.
android:gravity
được sử dụng để căn chỉnh văn bản bên trong chế độ xem văn bản.
Bạn có chắc chắn rằng bạn đang cố gắng căn chỉnh văn bản bên trong chế độ xem văn bản sang bên phải hay bạn muốn di chuyển chế độ xem văn bản sang bên phải đối với bố cục cha mẹ hay bạn đang cố gắng đạt được cả hai
android:gravity="right"
Về cơ bản, nó được sử dụng trong Bố cục tuyến tính, do đó bạn phải đặt chiều rộng của TextView hoặc EditText là
android:layout_width = "match_parent"
và
Khi bạn đang làm việc trong Bố cục tương đối, hãy sử dụng
android:layout_alignParentRight="true"
Tạo (linearLayout) android:layout_width="match_parent"
và TextViewandroid:layout_gravity="right"
Nếu nó ở trong RelativeLayout
bạn có thể sử dụngandroid:layout_toRightOf="@id/<id_of_desired_item>"
Hoặc là
Nếu bạn muốn căn chỉnh vào right
góc của thiết bịandroid:layout_alignParentRight="true"
Hãy để tôi giải thích khái niệm trọng lực bằng cách sử dụng WEB bởi vì rất nhiều nhà phát triển nhận thức được nó.
android_layout_gravity
cư xử float:left|right|top|bottom
Trong khi đó android_gravity
làm việc nhưtext_align:centre|left|right
Trong Android float là android_layout_gravity và text_align: là android_gravity.
Và android_layout_gravity áp dụng liên quan đến cha mẹ. trong đó như android_gravity áp dụng cho nội dung con hoặc bên trong của nó.
Lưu ý android_gravity chỉ hoạt động khi Chế độ xem của nó là match_parent (khi nó có không gian ở giữa).
Dưới đây làm việc cho tôi:
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sarah" />
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_username"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@+id/tv_username"
android:text="San Marco"
android:textAlignment="viewEnd" />
Vui lòng lưu ý android:layout_alignParentEnd
và android:textAlignment
cài đặt của TextView thứ hai.
Trong trường hợp của tôi, tôi đã sử dụng Relative Layout
cho mộtemptyString
Sau khi vật lộn về điều này trong một giờ. Chỉ điều này làm việc cho tôi:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
hoặc layout_toEndOf
cả hai hoạt động, nhưng để hỗ trợ nó tốt hơn, tôi đã sử dụng cả hai.
Để làm cho nó rõ ràng hơn:
Đây là những gì tôi đã cố gắng làm:
Và đây là đầu ra của trình giả lập
Bố trí:
<TextView
android:id="@+id/welcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Welcome "
android:textSize="16sp" />
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/welcome"
android:layout_toRightOf="@id/welcome"
android:text="@string/emptyString"
android:textSize="16sp" />
Thông báo rằng:
android:layout_width="wrap_content"
làmGravity
Không được sử dụng<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tct_postpone_hour"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:gravity="center_vertical|center_horizontal"
android:text="1"
android:textSize="24dp" />
</RelativeLayout>
làm cho số một thẳng hàng ở trung tâm cả ngang và dọc.
cố gắng thêm android:gravity="center"
vàoTextView
Tôi đã sử dụng thuộc tính "layout_alignRight" trong trường hợp của mình, trong văn bản của nó:
android:layout_alignRight="@+id/myComponentId"
Nếu bạn muốn thêm một số lề phải, chỉ cần đặt thuộc tính "Layout_Margin Right" thành "20dp" cho ví dụ, trong văn bản của nó:
android:layout_marginRight="20dp"