24

次のように、一連の RadioButtons を RadioGroup にプログラムで追加しようとしています。

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に設定する必要があります(背景の上にテキストだけが必要です)。XML でこれを手動で行うとandroid:button="@null"うまくいきますが、各ラジオ ボタンをハードコーディングしたくありません。やってみましbutton.setButtonDrawable(null)たが、何も変わりません。

どんな助けでも大歓迎です!

4

4 に答える 4

47

StateListDrawableドローアブルとして空を設定する必要があります。したがって、Java に相当するものandroid:button="@null"は次のとおりです。

radioButton.setButtonDrawable(new StateListDrawable());
于 2013-09-18T00:26:32.920 に答える
8

これを行う必要があります:

button.setBackgroundDrawable(null);

ドローアブルにセレクターへの参照がある場合は、セレクター xml を介して透明にすることができます。

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

あなたはおそらく解決策を見つけたので;)

于 2013-04-29T17:17:09.393 に答える
6

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

これだけが私のために働いた。

于 2014-12-03T09:58:23.070 に答える
4

複数のデバイスと API で私にとってうまくいったことは、それが得るのと同じくらい簡単でしたsetButtonDrawable(android.R.color.transparent);

于 2015-09-05T00:11:11.733 に答える