มันเป็นไปได้เมื่อมีการสร้างRelativeLayoutที่รันไทม์การตั้งค่าเทียบเท่าของandroid:layout_below
โปรแกรม?
มันเป็นไปได้เมื่อมีการสร้างRelativeLayoutที่รันไทม์การตั้งค่าเทียบเท่าของandroid:layout_below
โปรแกรม?
คำตอบ:
ใช่:
RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);
ขั้นแรกให้โค้ดสร้าง params เลย์เอาต์ใหม่โดยระบุความสูงและความกว้าง addRule
วิธีการเพิ่มเทียบเท่าของ XML android:layout_below
ที่ถูกต้อง จากนั้นคุณเพียงแค่เรียกView#setLayoutParams
ดูที่คุณต้องการมี params เหล่านั้น
หรือคุณสามารถใช้พารามิเตอร์โครงร่างมุมมองปัจจุบันและแก้ไข:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
มากกว่าที่จะสร้างใหม่ ในความเป็นจริงนี้ควรได้รับการยอมรับว่าเป็นคำตอบที่ถูกต้อง
ในขณะที่คำตอบ @jackofallcode ถูกต้องสามารถเขียนได้ในหนึ่งบรรทัด
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
เพื่อตั้งค่าด้วยsetLayoutParams
รุ่นKotlinพร้อมฟังก์ชันinfix
infix fun View.below(view: View) {
(this.layoutParams as? RelativeLayout.LayoutParams)?.addRule(RelativeLayout.BELOW, view.id)
}
จากนั้นคุณสามารถเขียน:
view1 below view2
หรือคุณสามารถเรียกมันว่าเป็นฟังก์ชั่นปกติ:
view1.below(view2)