[英]How to set the tablelayout android:layout_below programmatically
[英]Can I Set "android:layout_below" at Runtime Programmatically?
在運行時創建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);
首先,代碼通過指定高度和寬度來創建一個新的布局參數。 addRule
方法在android:layout_below
正確添加了 xml 的等效android:layout_below
。 然后你只需在你想要擁有這些參數的視圖上調用View#setLayoutParams
。
或者,您可以使用視圖當前布局參數並修改它們:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
雖然@jackofallcode 答案是正確的,但它可以寫成一行:
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
帶中綴功能的Kotlin版本
infix fun View.below(view: View) {
(this.layoutParams as? RelativeLayout.LayoutParams)?.addRule(RelativeLayout.BELOW, view.id)
}
然后你可以寫:
view1 below view2
或者您可以將其稱為普通函數:
view1.below(view2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.