ฉันเกลียดที่จะคืนชีพเธรดเก่าอีกครั้ง แต่นี่เป็นปัญหาที่ไม่ได้รับคำตอบอย่างถูกต้องและยิ่งกว่านั้นฉันพบปัญหานี้ด้วยตัวเอง
นี่คือความยาวถ้าคุณเพียงแค่สนใจในคำตอบโปรดเลื่อนลงไปจนถึงรหัส:
android: แรงโน้มถ่วงและ android: layout_gravity ทำงานต่างกัน นี่คือบทความที่ฉันอ่านซึ่งช่วยฉันได้
รายการของบทความ: แรงโน้มถ่วงส่งผลกระทบต่อมุมมองหลังจากที่ได้รับมอบหมายความสูง / ความกว้าง ดังนั้นศูนย์แรงโน้มถ่วงจะไม่ส่งผลกระทบต่อมุมมองที่ดำเนินการ FILL_PARENT (คิดว่าเป็นระยะขอบอัตโนมัติ) layout_gravity center WILL ส่งผลกระทบต่อมุมมองที่เป็น FILL_PARENT (คิดว่าเป็น auto pad)
โดยพื้นฐานแล้ว Android: layout_gravity ไม่สามารถเข้าถึงโดยทางโปรแกรมได้เฉพาะ android: แรงโน้มถ่วง ในกรณีของ OP และกรณีของฉันคำตอบที่ยอมรับไม่ได้วางปุ่มตรงกลางในแนวตั้ง
เพื่อปรับปรุงคำตอบของ Karthi:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
การเชื่อมโยงLinearLayout.LayoutParams
ไปยัง
android: layout_gravity แสดงความหมาย "ไม่มีวิธีการที่เกี่ยวข้อง" ไม่สามารถเข้าถึงแบบเป็นโปรแกรม ในขณะที่แรงโน้มถ่วงเป็นสนามในชั้นเรียน