【问题标题】:How can I change a button style dynamically in Android? [duplicate]如何在 Android 中动态更改按钮样式? [复制]
【发布时间】:2011-06-11 22:03:04
【问题描述】:

我想动态更改按钮的样式,即在 Java 代码中,例如:

((Button)findViewById(id)).setStyle("@styles/foo")

<resources>
    <style name="foo">
        <item name="android:adjustViewBounds">true</item>
        <item name="android:maxHeight">100px</item>
        <item name="android:maxWidth">200px</item>
    </style>
</resources>

我没见过像setStyle这样的东西,所以:

我必须更改每个属性还是可以更改整个样式?

【问题讨论】:

    标签: android button coding-style


    【解决方案1】:

    分配这样的样式

    <style name="ButtonHOLO" parent="android:Widget.Button">
          <item name="android:background">@drawable/btn_default_holo_dark</item>
          <item name="android:minHeight">@dimen/calc_btn_h</item>
          <item name="android:minWidth">@dimen/calc_btn_w</item>
          <item name="android:textColor">#ffffff</item>
    </style>
    

    动态按钮需要同时使用 setBackgroundResource() 和 setTextAppearance() 函数。例如:

    btn.setBackgroundResource(R.drawable.btn_default_holo_dark);
    btn.setTextAppearance(context, R.style.ButtonHOLO);
    

    在哪里

    btn_default_holo_dark

    是描述按钮选择器的 .xml 文件的名称。

    【讨论】:

      【解决方案2】:

      我发现绕过这个明显缺陷的最简单方法是制作两个按钮。制作其中之一Visibility.gone。然后只需将Visibility 从另一个更改为gone 并通过Visibility.visible 激活第一个。

      我不太喜欢这种解决方案,但它比我目前找到的替代方案更快、更明智。

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        • 2019-02-04
        相关资源
        最近更新 更多