一般情况下,我试图了解Android中是否可以以编程方式任意更改视图的属性。
据我所知,有许多属性可以通过方法更改(例如TextView.setBackgroundColor()等等),但是没有针对每个可能属性的方法。
具体来说,我有兴趣实例化自定义View然后更改layout_weight。我有兴趣学习如何做到这一点,但总的来说,我想知道如果我不能以编程方式更改它的属性,我应该如何创建自定义视图。我知道我可以在xml中更改其所有属性(包括自定义xml属性),但我希望能够在运行时实例化该视图。
答案 0 :(得分:3)
layout_
属性实际上与this pro-tip中解释的大多数其他内容略有不同:它们是对父ViewGroup 的说明,并存储在LayoutParams
中}。
例如,layout_weight
中的LinearLayout
可以在LinearLayout.LayoutParams中找到。这意味着您可以通过执行
LinearLayout.LayoutParams params =
(LinearLayout.LayoutParams) yourCustomView.getLayoutParams();
// Set the weight however you like
params.weight = 4.0f;
创建视图也可以这样做:
LinearLayout parentLayout = ...;
YourCustomView yourCustomView = ...;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, // width
LayoutParams.WRAP_CONTENT, // height
1.0f); // weight
parentLayout.addView(yourCustomView, params);