如何在Android中dynamic更改button样式?

我想dynamic地改变一个button的风格,例如在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一样,所以:

我必须改变每一个属性,否则我可以改变整个风格?

Solutions Collecting From Web of "如何在Android中dynamic更改button样式?"

看看这个问题: 如何以编程方式在视图中设置样式属性

分配一个这样的风格

 <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> 

dynamic地你需要使用setBackgroundResource()和setTextAppearance()函数。 例如:

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

哪里

btn_default_holo_dark

是描述button的select器的.xml文件的名称。

我发现绕过这个明显缺陷的最简单的方法是制作button。 让他们其中一个Visibility.gone 。 然后简单地将Visibility从另一个改为gone并通过Visibility.visible激活第一个。

我不太喜欢这个解决scheme,但是比我迄今为止find的替代品更快,更安全。

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

9补丁

9补丁绘制工具