Как я могу сделать RadioButton с перекрывающимся текстом? - PullRequest
4 голосов
/ 18 января 2012

Я программно добавляю несколько ответов на вопросы в виде RadioButtons в RadioGroup (см. Код и изображение ниже).

Я почти достиг этого, но вместо радиокнопки с текстом на боку (см. изображение ниже), я хотел бы иметь только текст и фон.

Могу ли я избавиться от переключателя?

Или я могу установить свой текущий фон в качестве переключателя (с отмеченными / не отмеченными состояниями) и добавить текст, перекрывающий его?

RadioGroup answer_container = (RadioGroup) findViewById(R.id.answer_container);

while (c.isAfterLast() == false) {

    RadioButton answer = new RadioButton(PCItem.this);
    answer.setText(c.getString(c.getColumnIndex(DBAdapter.KEY_ANS_TEXT)));
    answer.setBackgroundResource(R.drawable.btn_ans);
    answer.setPadding((int)(30 * density), 0, 0, 0);
    answer.setGravity(Gravity.CENTER_VERTICAL);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int)(775 * density), (int)(81 * density));
    params.setMargins(0, (int)(20*density), 0, 0);
    answer.setLayoutParams(params);

    answer_container.addView(answer);

    c.moveToNext();
}

enter image description here

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Вы можете использовать radioButton.setButtonDrawable().Вы также можете указать различные элементы рисования для каждого состояния кнопки (включая checked / unchecked), используя StateListDrawable.

Чтобы полностью удалить кнопку, вы можете просто установить ее как null:

<RadioButton 
    android:button="@null"
    ...
/>

Имейте в виду, что код radioButton.setButtonDrawable(null); не работает!Правильный способ - установить пустой StateListDrawable:

radioButton.setButtonDrawable(new StateListDrawable());

Если у вас есть больше элементов, вы можете создать собственный стиль, чтобы переопределить свойства по умолчанию RadioButton:

<style name="CustomRadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
   <item name="android:button">@null</item>
   <item name="android:paddingLeft">0dp</item>
</style>
0 голосов
/ 18 января 2012

Хорошо, я сделал это, используя

answer.setButtonDrawable(android.R.color.transparent);

для удаления кнопки и использования селектора в качестве btn_ans:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checked="false" android:drawable="@drawable/btn_choix_unsel" /> 
<item android:state_checked="true" android:drawable="@drawable/btn_choix_sel" />
</selector>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...