2013-04-29 12 views
19

私はプログラム的にそうようRADIOGROUPへのRadioButtonのセットを追加しようとしています:どのようにプログラムでアンドロイドを設定できますか:button = "@ null"?

for (int i = 0; i < RANGE; i++) { 
    RadioButton button = new RadioButton(this); 
    button.setId(i); 
    button.setText(Integer.toString(i)); 
    button.setChecked(i == currentHours); // Select button with same index as currently selected number of hours 
    button.setButtonDrawable(Color.TRANSPARENT); 
    button.setBackgroundResource(R.drawable.selector); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ((RadioGroup)view.getParent()).check(view.getId()); 
      currentHours = view.getId(); 
     } 
    }); 

    radioGroupChild.addView(button); 
} 

と私は(私は私の背景の上にテキストだけをしたい)nullにボタン描画可能に設定する必要があります。 android:button="@null"で手動でXMLでこれを行うのは素晴らしいですが、私は各ラジオボタンをハードコードしたくありません。私はちょうどbutton.setButtonDrawable(null)してみましたが、それは何も変更されません。

ご協力いただきありがとうございます。

+1

たhttp://stackoverflow.com/a/8910925/317889 – HGPB

答えて

5

あなたはこれを行う必要があります。

button.setBackgroundDrawable(null); 

をご描画可能で、あなたの選択のxmlを通じてそれを透明にすることができセレクタへの参照がある場合:あなたはおそらく解決策を見つけたいと

<item android:drawable="@android:color/transparent" /> 

を。 )

+0

私はこれを試しましたが、何らかの理由でうまく動作しません。 – Cornholio

+0

setBackgroundDrawableではなく、setBackgroundDrawableです。 – Neoh

+0

ああ、申し訳ありませんが、それを見ていませんでした。問題は、ちょうど私が私のカスタムセレクタdrawableを設定している背景を削除することです。 – Cornholio

41

ドロアブルとして空のStateListDrawableを設定する必要があります。だから、android:button="@null"のJavaの当量は次のとおりです。

radioButton.setButtonDrawable(new StateListDrawable()); 
+3

これは私にとって完璧に機能しました。なぜそれが最善の答えではないか分かりません。 – darrenp

+0

あまりにも私のために働いた!ありがとう! – saiyancoder

+4

この回答は正しい回答である必要があります – SILINIK

3

setButtonDrawable(getResources().getDrawable(android.R.color.transparent)) トリックを行う必要があります。

これは私にとってはうまくいきました。複数のデバイスとのAPIに私のために働いていたし、それが取得するのと同じくらい簡単です何

2

これは、あなたが実際に背景セレクタを使用することがあります場合は、より良い答えですsetButtonDrawable(android.R.color.transparent);

+0

は完璧に働いた、ありがとう –

関連する問題