0

Я создал радиогруппу со следующими RadioButtons с макетом, который я хочу достичь.Правильное расположение радиолюбителя Android в группе

Radiobuttons

XML иерархия:

  • RadioGroup
    • LinearLayout
      • RadioButton
      • RadioButton
    • LinearLayout
      • RadioButton
      • RadioButton
    • RadioButton

Конечно, это означает, что только один RadioButton еще является прямым потомком RadioGroup, что означает, что когда я нажимаю любой из RadioButtons, тот, кто уже был проверен, не снимает флажок.

Я использую очень компактный код для получения зарегистрированного RadioButton, если это прямые дети.

RadioGroup rg = (RadioGroup) v.findViewById(R.id.rgTopupValue); 
View radioCheckedView = rg.findViewById(rg.getCheckedRadioButtonId()); 
RadioButton rb = (RadioButton) rg.getChildAt(rg.indexOfChild(radioCheckedView)); 

Есть ли способ решить эту проблему, без использования очень длинных случаев?

+2

пожалуйста, сделать это немного понятно .. я не получил, если вы хотите иметь все функции кнопки радио, как они из той же группы, или что? ? – Shruti

+0

Предпочтительно да, но это невозможно. В любом случае я не нашел своего точного ответа. Google должен облегчить компоновку RadioButtons ... – Armadillo

ответ

2

Похоже, что на ваш вопрос нет реального ответа. Я не думаю, что есть реальное решение. Но это может решить вашу проблему (это обходной путь):

RadioButton rb1, rb2, rb3; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    ... 
    rb1 = (RadioButton) findViewById(R.id.rb1); 
    rb2 = (RadioButton) findViewById(R.id.rb2); 
    rb3 = (RadioButton) findViewById(R.id.rb3); 

    rb1.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      rb1.setChecked(true); 
      rb2.setChecked(false); 
      rb3.setChecked(false); 
     } 
    }); 

    rb2.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      rb1.setChecked(false); 
      rb2.setChecked(true); 
      rb3.setChecked(false); 
     } 
    }); 

    rb3.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      rb1.setChecked(false); 
      rb2.setChecked(false); 
      rb3.setChecked(true); 
     } 
    }); 
} 
+0

Да, я боюсь, что это может быть единственный способ сделать это. Позор, это так долго. – Armadillo

+0

Это не так долго, но почему вы хотите, чтобы это было как можно короче? – Wannabe

+0

Я не знаю, я думаю, это личное предпочтение. Как RadioGroups LinearLayouts, могу ли я использовать вложенные в них? Таким образом, я мог бы сразу снять 2 RadioButtons (в моем случае) – Armadillo

Смежные вопросы