【问题标题】: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 激活第一个。
我不太喜欢这种解决方案,但它比我目前找到的替代方案更快、更明智。