2011-01-19 14 views
7

私は、すなわちJavaコードで、動的に何かのボタンのスタイルを変更したい:私は、のsetStyleのようなものを見たことがないていないAndroidでボタンスタイルを動的に変更するにはどうすればよいですか?

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

を:

は、私はすべて単一のプロパティを変更する必要がありますまたは私は全体のスタイルを変更することができますか?

答えて

0

はまた、9枚のパッチ画像を見てみることをお勧めします。これらは、アプリケーションを実行している現在のデバイスに基づいて、ウィジェットやボタンに結び付けられたイメージのサイズやテキストを調整するのに非常に便利です。

9 patch

9 patch draw tool

+0

私はそれについて知っていましたが、ありがとうございました。私が与えたスタイルの例は、私がボタンに適用したいものではないので、良い例ではなく、単なる発明されたスタイルです。私は影、テキストの色/サイズなどのようなものを変更したい – DarthRoman

11

あなたはsetBackgroundResource()とsetTextAppearance()関数の両方を使用する必要が動的にボタンにこの

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

のようなスタイルを割り当てます。例えば:

btn_default_holo_dark

があなたのボタンのセレクタを記述した.xmlファイルの名前です

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

+0

これは受け入れられた答えでなければならない! –

1

この明らかな欠陥を回避するために私が見つけた最も簡単な方法は、ボタンを作ることでした。そのうちの1つをVisibility.goneにしてください。次に、Visibilityをもう一方からgoneに変更し、最初のものをVisibility.visibleで有効にします。

私はその解決策が本当に気に入らないのですが、私がこれまでに見つけた選択肢よりも速く、より衛生的です。

関連する問題