3

ルート レイアウトとして ConstraintLayout があり、問題ありません。
ただし、現在、RadioGroup があり、その中に RadioButton の 2 つの列を作成する必要があります。ConstraintLayout はネストされたレイアウトを取り除くためのものであるため、それらの RadioButton を RadioGroup に配置して適切に配置することは問題ないと考えました。
RadioGroup を含むルート レイアウトとして ConstraintLayout を使用しても、何も変わらないようです。
しかし、多分私は間違っています。

ConstraintLayout 内にある RadioGroup 内に RadioButtons の 2 つの行をどのように実現しますか?

乾杯

4

4 に答える 4

5

View直接の親のレイアウト属性を使用する必要があります。たとえば、直接の親は であり、これらの属性を解釈する方法がわからないため、 をRadioButtons と一緒に持つことはできません。layout_constraintRadioGroupRadioGroup

RadioGroupextendsLinearLayoutであるため、single でできる最善のことは、s のRadioGroup1 行または 1 列ですRadioButtonRadioGroupレイアウトと Java コードで2 つの を使用して、両方の変更をリッスンすることができます。

private RadioGroup mGroup1; // init in onCreate
private RadioGroup mGroup2; // init in onCreate

private OnCheckedChangedListener mCheckListener = new OnCheckedChangedListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // To make it appear as if the two groups are one large group,
        // checking something in either should clear the check in the other.
        RadioGroup otherGroup = group == mGroup1 ? mGroup2 : mGroup1;
        otherGroup.clearCheck();

        // do something with checkedId
    }
}
于 2016-11-09T04:13:01.270 に答える
0

私はそれを本当に簡単にする単純なクラスを思いつきました。すべてが 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());
    }
于 2018-05-23T02:36:23.297 に答える