ボタンのスタイルを動的に変更したい、つまり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のようなものを見たことがないので、
すべてのプロパティを変更する必要がありますか、それともスタイル全体を変更できますか?
このようなスタイルを割り当てるには
<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ファイルの名前です。
この質問を確認してください: プログラムでビューのスタイル属性を設定する方法
この明らかな欠陥を回避するために私が見つけた最も簡単な方法は、ボタンを作成することでした。それらの1つをVisibility.gone
にします。次に、Visibility
をもう1つからgone
に変更し、Visibility.visible
を使用して最初の1つをアクティブにします。
私はその解決策はあまり好きではありませんが、これまでに見つけた代替策よりも高速で健全です。