Tôi ghét phải làm sống lại các chủ đề cũ nhưng đây là một vấn đề không được trả lời chính xác và hơn nữa tôi đã tự mình gặp vấn đề này.
Đây là một đoạn dài, nếu bạn chỉ quan tâm đến câu trả lời, vui lòng cuộn toàn bộ mã xuống:
android: vity và android: layout_gravity hoạt động khác nhau. Đây là một bài báo tôi đã đọc giúp tôi.
GIST của bài viết: trọng lực ảnh hưởng đến chế độ xem sau khi chiều cao / chiều rộng được chỉ định. Vì vậy, trung tâm trọng lực sẽ không ảnh hưởng đến chế độ xem được thực hiện FILL_PARENT (nghĩ về nó như lề tự động). layout_gravity centre SILL ảnh hưởng đến chế độ xem đó là FILL_PARENT (nghĩ về nó như là pad tự động).
Về cơ bản, android: layout_gravity KHÔNG THỂ truy cập theo chương trình, chỉ android: trọng lực. Trong trường hợp của OP và trường hợp của tôi, câu trả lời được chấp nhận không đặt nút ở giữa theo chiều dọc.
Để cải thiện câu trả lời của Karthi:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Liên kết đến LinearLayout.LayoutParams
.
android: layout_gravity hiển thị "Không có phương thức liên quan" nghĩa là không thể truy cập theo chương trình. Trong khi đó trọng lực là một lĩnh vực trong lớp.