我想动态地改变按钮的样式,即在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这样的东西,所以:
我是否必须更改每个属性,或者我可以更改整个样式?
答案 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)