3

我想显示同一个单选组的 6 个单选按钮。但是所有 6 个单选按钮都保持在同一行并离开屏幕。如何在两行中显示它们(每行 3 个单选按钮)?我为我尝试了一切可能的东西(我是 android 新手)。

4

3 回答 3

4

通过搜索,似乎没有办法做到这一点,因为 RadioGroup 使用不换行的 LinearLayout。由于单选按钮必须是单选组的直接子级,因此您不能将子布局添加到单选组。

这意味着您必须手动实现此布局行为。两种可能的选择是:

  • 创建 RadioGroup 的副本以扩展不同的布局,或者至少允许您动态控制它。
  • 实现您自己的自定义布局以替换RadioGroup扩展您选择的布局,并实现OnClickListener. 这里有一个很好的例子。
于 2012-06-09T12:32:16.047 回答
1

一个简单的答案是将 RadioGroup 包装在 ScrollView 中,以便用户可以滚动到屏幕外按钮(不是很优雅,但也不是代码密集型)。

于 2012-06-09T12:50:43.727 回答
0

由marginTop和marginLeft动态生成,调整需要在同一行radiobutton。一、获取屏幕宽度,设置layoutparams marginLeft为屏幕宽度的一半,marginTop的高度需要根据具体的radiobutton进行调整。eg:</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 回答