以编程方式更改查看属性Android

时间:2015-09-13 01:43:33

标签: android android-layout

一般情况下,我试图了解Android中是否可以以编程方式任意更改视图的属性。

据我所知,有许多属性可以通过方法更改(例如TextView.setBackgroundColor()等等),但是没有针对每个可能属性的方法。

具体来说,我有兴趣实例化自定义View然后更改layout_weight。我有兴趣学习如何做到这一点,但总的来说,我想知道如果我不能以编程方式更改它的属性,我应该如何创建自定义视图。我知道我可以在xml中更改其所有属性(包括自定义xml属性),但我希望能够在运行时实例化该视图。

1 个答案:

答案 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);