在運行時創建相對佈局時,是否可以通過編程設置android:layout_below
的等效項?可以在運行時以編程方式設置「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
就可以獲得這些參數。
或者您可以使用視圖當前佈局參數並進行修改:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
它更像是對現有答案的評論,而不是另一個答案 – 2014-02-11 15:41:14
@EelLee這是很明顯的另一種方式來回答這個問題,這就是爲什麼它有11個upvotes – 2015-01-04 20:50:14
這應該比其他答案更有效:爲了保持視圖的一致行爲,我們應該使用現有的'LayoutParams'而不是創建新的視圖,事實上,這應該被接受爲正確的答案。 – 2016-10-19 21:27:51
雖然@jackofallcode答案是正確的,它可以寫在一行:
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
- 1. 以編程方式設置/取消設置_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_(運行時)
- 2. 我可以以編程方式設置Mercurial配置選項嗎?
- 3. 如何設置tablelayout android:layout_below編程式
- 4. 您可以設置Axis以編程方式使用HTTP/1.0嗎?
- 5. Crystal 2008 - 我可以在運行時以編程方式訪問SQL語句嗎?
- 6. 以編程方式設置iPhone設置
- 7. 我可以通過編程方式設置SQLNET.AUTHENTICATION_SERVICES =(NONE)嗎?
- 8. 如何在運行時以編程方式更改Firefox配置?
- 9. 我可以在iOS中以編程方式設置對象屬性嗎?
- 10. 以編程方式設置用戶定義的運行屬性
- 11. 以編程方式配置IPhone設置
- 12. 我們可以以編程方式配置Chrome嗎?
- 13. trigger.io以編程方式設置方向
- 14. 以編程方式在運行時設置HTML元素的寬度AngularJS
- 15. 我可以以編程方式設置DirectCast命令的對象類型嗎?
- 16. 在調試模式下以編程方式設置WCF超時
- 17. 我可以在運行時設置StructLayout的size屬性嗎?
- 18. VB - 可以在消息框中設置運行計時器嗎?
- 19. 我可以在運行時更改emacs設置嗎?
- 20. 以編程方式設置「以管理員身份運行」標誌
- 21. 如何以編程方式(在運行時)滑動一行RecyclerView?
- 22. 以編程方式設置RadioGroup
- 23. 以編程方式設置php.ini值
- 24. 如何以編程方式設置masterpage?
- 25. 以編程方式設置LayoutParams
- 26. 以編程方式設置LayoutParams.BELOW
- 27. 以編程方式設置WPF屬性
- 28. 以編程方式設置寬度Imageview
- 29. 以編程方式設置Wordpress語言?
- 30. android-以編程方式設置LayoutParams
Qberticus - 非常感謝作出詳細和明確的答覆。我會檢查這一點。 – AlanH 2010-07-19 07:25:31
這對我來說很好。再次感謝。 – AlanH 2010-07-20 06:00:02
很好的解釋... – 2011-10-18 07:47:12