如何在Android中动态更改按钮样式?

时间:2011-01-19 17:06:58

标签: android button coding-style

我想动态地改变按钮的样式,即在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这样的东西,所以:

我是否必须更改每个属性,或者我可以更改整个样式?

4 个答案:

答案 0 :(得分:18)

指定这样的风格

<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()函数。 E.g:

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

其中

  

btn_default_holo_dark

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

答案 1 :(得分:2)

答案 2 :(得分:1)

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

我不太喜欢这个解决方案,但它比我到目前为止找到的替代方案更快更安全。

答案 3 :(得分:0)

您可能还想查看9个修补程序图像。这些对于根据运行应用程序的当前设备调整与窗口小部件或按钮关联的图像大小和文本非常有用。

9 patch

9 patch draw tool