Подтвердить что ты не робот

Как программно установить андроид: button = "@null"?

Я пытаюсь программно добавить набор 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);
}

и мне нужно установить кнопку drawable в null (я хочу только текст поверх моего фона). Ручное выполнение этого в XML с помощью android:button="@null" отлично работает, но я не хочу жестко кодировать каждый переключатель. Я пробовал просто делать button.setButtonDrawable(null), но это ничего не меняет.

Любая помощь очень ценится!

4b9b3361

Ответ 1

Вы должны сделать это:

button.setBackgroundDrawable(null);

Если ваш drawable имеет ссылку на селектор, вы можете сделать его прозрачным через свой селектор xml:

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

как вы, вероятно, нашли бы решение;)

Ответ 2

Вам нужно установить пустой StateListDrawable в качестве допустимого. Таким образом, эквивалент Java android:button="@null":

radioButton.setButtonDrawable(new StateListDrawable());

Ответ 3

setButtonDrawable(getResources().getDrawable(android.R.color.transparent)) должен сделать трюк.

Только это сработало для меня.

Ответ 4

Что работало для меня в нескольких устройствах и API, и так же просто, как и было, это было setButtonDrawable(android.R.color.transparent);