私はそれを本当に簡単にする単純なクラスを思いつきました。すべてが 1 つの Java ファイルにまとめられています。それは「束縛されていない」ラジオグループです。ラジオ ボタンを好きなようにレイアウトし、ボタンをグループに追加すると、radioGroup のように機能します。
コードはこの要旨UnboundRadioGroupにあり、完全な説明がありますが、その使用法は次のとおりです。
匿名の内部クラスを使用したくない場合は、実装を使用できます
public class MainActivity extends AppCompatActivity implements UnboundRadioGroup.OnClickListener
グループを作成するには、いくつかの方法があります。
ルート ビューグループを見つける
ViewGroup viewGroup = (ViewGroup) findViewById(android.R.id.content);
// create a radio group with the root viewgroup
UnboundRadioGroup unboundRadioGroup1 = new UnboundRadioGroup(this, viewGroup);
// don't forget to set a click listener for the group. Using implements in this case
unboundRadioGroup1.setOnClickListener(this);
または、ルート ビューグループの ID でラジオ グループを作成します。
UnboundRadioGroup unboundRadioGroup2 = new UnboundRadioGroup(this, android.R.id.content);
// add your click listener using an inner class
unboundRadioGroup2.setOnClickListener(new UnboundRadioGroup.OnClickListener()
{
@Override
public void OnClick(RadioButton radioButton)
{
Log.i("radioButton", radioButton.getTag().toString());
}
});
この方法では、ボタンをグループに手動で追加します
unboundRadioGroup1.add((RadioButton) findViewById(R.id.radioButton1));
unboundRadioGroup1.add((RadioButton) findViewById(R.id.radioButton2));
このメソッドは、XML の android:tag プロパティに基づいて、グループにボタンを自動的に追加します。コードの他の場所にタグが必要な場合は、このメソッドを使用しないでください。ただし、タグが必要ない場合は、複数のラジオ ボタンのタグを同じ名前に設定すると、このメソッドはそれらからグループを作成します。
unboundRadioGroup2.createGroupByTag("tag");
内部クラスの代わりに実装を使用している場合、Onclick は次のように設定されます。
@Override
public void OnClick(RadioButton radioButton)
{
Log.i("radioButton", radioButton.getTag().toString());
}