我想显示同一个单选组的 6 个单选按钮。但是所有 6 个单选按钮都保持在同一行并离开屏幕。如何在两行中显示它们(每行 3 个单选按钮)?我为我尝试了一切可能的东西(我是 android 新手)。
问问题
7727 次
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 回答