2012-04-01 12 views
0

android:button属性を設定する純粋なJavaの方法はありますか?私のユースケースには、カスタムオン/オフ画像を持つラジオボタンがいくつかあります。彼らは現在xmlになっていますが、私はいくつかの理由から純粋なjavaで作成する必要があります。現在android:button<selector> xmlファイル参照:アンドロイド:javaの同等のアンドロイド:ボタン属性?

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" 
     android:drawable="@drawable/red_down_full" /> 
    <item android:drawable="@drawable/red_down" /> 
</selector> 

をどちらか

  • 参照する方法はあり<selector> xmlファイルJavaで
  • <selector>は完全に、ちょうどJavaでstate_checked画像を設定スキップ?

答えて

0

はい、コードでxml画像セレクタを設定できます。セレクタをRadioButtonに設定する場合は、setButtonDrawable(idOfYourSelector)に電話する必要があります。

コードは次のようになります。

((RadioButton)findViewById(R.id.yourRadioButton)).setButtonDrawable(R.drawable.yourSelector); 

あなたがstate_checkedのために使用される唯一の画像を設定したい場合は、あなたの代わりにsetButtonDrawable(idOfYourImage)あなたのセレクタのIDにごstate_checked画像のIDを指定する必要があります。あなたのケースでは、それは次のようになります。

((RadioButton)findViewById(R.id.yourRadioButton)).setButtonDrawable(R.drawable.red_down_full); 

それはあなたのRadioButtonのラベルが重ならないようにするために、あなたはあなたのdrawableの幅を知っている必要があります。次に、drawableの幅に応じて、RadioButtonの左パッドを設定します。これにより、RadioButtonの画像がそのラベルと重複しないようになります。

+0

元のラジオボタンの画像は背景の上に重ねて表示されますが、 'setButtonDrawable'は元のラジオボタンのバウンディングボックスにクリップされた画像(やや大きめです)を残します。いずれも 'android:button =" ... "'はしません。 –

+0

@LiHaoyi:申し訳ありません。私は、あなたがRadioButtonではなくButtonについて質問していると思っていました。私はすでに私の答えを更新しました。 – Arci

+0

@LiHaoyi:解決策は、それに応じてRadioButtonの左パッドを設定することです。 :) – Arci

関連する問題