Câu trả lời ngắn: sử dụng android:gravity
hoặc setGravity()
để kiểm soát trọng lực của tất cả các khung nhìn con của một container; sử dụng android:layout_gravity
hoặc setLayoutParams()
để kiểm soát trọng lực của một chế độ xem riêng lẻ trong một thùng chứa.
Câu chuyện dài: để kiểm soát trọng lực trong một container bố trí tuyến tính như LinearLayout
hay RadioGroup
, có hai phương pháp:
1) Để kiểm soát mức độ nghiêm trọng của TẤT CẢ các chế độ xem con của một vùng LinearLayout
chứa (như bạn đã làm trong sách của mình), hãy sử dụng android:gravity
(không android:layout_gravity
) trong bố cục tệp XML hoặc setGravity()
phương thức trong mã.
2) Để kiểm soát mức độ hấp dẫn của chế độ xem con trong vùng chứa của nó, hãy sử dụng android:layout_gravity
thuộc tính XML. Trong mã, người ta cần có được LinearLayout.LayoutParams
khung nhìn và thiết lập trọng lực của nó. Dưới đây là một ví dụ mã đặt nút ở dưới cùng trong vùng chứa theo chiều ngang:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
Đối với LinearLayout
thùng chứa ngang , trọng lực ngang của chế độ xem con của nó được căn trái lần lượt và không thể thay đổi. Thiết android:layout_gravity
để center_horizontal
không có tác dụng. Trọng lực dọc mặc định là trung tâm (hoặc centre_vertical) và có thể được thay đổi thành trên cùng hoặc dưới cùng. Trên thực tế, layout_gravity
giá trị mặc định là -1
nhưng Android đặt nó ở giữa theo chiều dọc.
Để thay đổi vị trí ngang của chế độ xem con trong vùng chứa tuyến tính ngang, người ta có thể sử dụng layout_weight
, lề và phần đệm của chế độ xem con.
Tương tự, đối với vùng chứa Nhóm Chế độ xem dọc, trọng lực dọc của chế độ xem con của nó được xếp thẳng hàng với nhau và không thể thay đổi. Trọng lực ngang mặc định là trung tâm (hoặc center_horizontal
) và có thể thay đổi sang trái hoặc phải.
Trên thực tế, một khung nhìn con như nút cũng có android:gravity
thuộc tính XML và setGravity()
phương thức để kiểm soát các khung nhìn con của nó - văn bản trong nó. Cái Button.setGravity(int)
này được liên kết với mục developer.android.com này .