3

同じラジオグループの6つのラジオボタンを表示したい。ただし、6つのラジオボタンはすべて同じ行に残り、画面から消えます。それらを2行(それぞれ3つのラジオボタン)で表示するにはどうすればよいですか?私は私のために可能な限りすべてを試しました(私はアンドロイドに不慣れです)。

4

3 に答える 3

4

RadioGroupはラップしないLinearLayoutを使用するため、検索してみると、それを行う方法はないようです。ラジオボタンはラジオグループの直接の子である必要があるため、サブレイアウトをラジオグループに追加することはできません。

これは、このレイアウト動作を手動で実装する必要があることを意味します。2つの可能なオプションは次のとおりです。

  • RadioGroupのコピーを作成して、別のレイアウトを拡張するか、少なくとも動的に制御できるようにします。
  • 独自のカスタムレイアウトを実装してRadioGroup、選択したレイアウトを拡張し、を実装しOnClickListenerます。ここに良い例があります。
于 2012-06-09T12:32:16.047 に答える
1

簡単な答えは、RadioGroupをScrollViewでラップして、ユーザーが画面外のボタンまでスクロールできるようにすることです(実際にはエレガントではありませんが、コードを多用することもありません)。

于 2012-06-09T12:50:43.727 に答える
0

marginTopとmarginLeftによって動的に生成され、ラジオボタンの同じ行にある必要性を調整します。まず、画面の幅を取得し、layoutparams marginLeftを画面の幅の半分に設定します。marginTopの高さは、特定のラジオボタンに従って調整する必要があります。例:</ p>

holder.question = (TextView) convertView.findViewById(R.id.topic_item_question);
            holder.option = (RadioGroup) convertView.findViewById(R.id.topic_item_option);
            holder.option1 = (RadioButton) convertView.findViewById(R.id.topic_item_option1);
            holder.option2 = (RadioButton) convertView.findViewById(R.id.topic_item_option2);

            //为了能够在一行显示两个radiobutton:获取屏幕的宽度
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            int width = wm.getDefaultDisplay().getWidth();//左侧设置的间距
            int height = DensityDpToPx.dpToPx(context, 24);//处于第二个的高度间距

            LinearLayout.LayoutParams params = (LayoutParams) holder.option2.getLayoutParams();
            params.setMargins(width / 2, -height, 0, 0);
            holder.option2.setLayoutParams(params);

            holder.option3 = (RadioButton) convertView.findViewById(R.id.topic_item_option3);
            holder.option4 = (RadioButton) convertView.findViewById(R.id.topic_item_option4);

            LinearLayout.LayoutParams paramsTwo = (LayoutParams) holder.option4.getLayoutParams();
            paramsTwo.setMargins(width / 2, -height, 0, 0);
            holder.option4.setLayoutParams(paramsTwo);
于 2016-12-30T07:44:38.103 に答える