簡體   English   中英

我可以在運行時以編程方式設置“android:layout_below”嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM