【问题标题】:Programmatically change View properies Android以编程方式更改视图属性 Android
【发布时间】:2015-09-13 10:08:03
【问题描述】:

一般来说,我试图了解在 Android 中是否可以通过编程方式任意更改视图的属性。

我知道有许多属性可以通过方法(例如 TextView.setBackgroundColor() 等等)进行更改,但并不是每个可能的属性都没有方法。

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

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    layout_ 属性实际上与this pro-tip 中解释的大多数其他内容略有不同:它们是对父视图组 的指令,并存储在它们的LayoutParams 中。

    例如,LinearLayout 中的 layout_weight 将在 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);
    

    【讨论】:

    • 谢谢。那么一般情况下,我可以通过访问 LayoutParams 对象的属性来更改属性吗?
    • @Bob - 是的,通常layout_ 属性将具有关联的公共变量或与之关联的方法。
    • 顺便说一句,您链接到的那个专业提示对于理解这些事情的一般工作方式非常有帮助。谢谢!
    猜你喜欢
    • 2021-09-03
    • 2013-03-09
    • 2017-02-27
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多