我想显示相同广播组的6个单选按钮。但是所有6个单选按钮都保持在同一条线上并离开屏幕。如何以两行显示它们(每个3个单选按钮)? 我为我尝试了一切可能(我是android新手)。
答案 0 :(得分:4)
从搜索开始,似乎没有办法,因为RadioGroup使用的是LinearLayout,它不会换行。由于单选按钮必须是直接子节点到无线电组,因此无法将子布局添加到无线电组。
这意味着您必须手动实现此布局行为。两种可能的选择是:
RadioGroup
,并实现OnClickListener
。有一个很好的例子here。答案 1 :(得分:1)
一个简单的答案是将您的RadioGroup包装在ScrollView中,这样用户就可以滚动到屏幕外按钮(不是真正优雅,但也不是代码密集)。
答案 2 :(得分:0)
由marginTop和marginLeft动态生成,以调整需要在radiobutton的同一行。首先,获取屏幕的宽度,设置layoutparams marginLeft为屏幕宽度的一半,marginTop的高度需要根据具体的radiobutton.eg进行调整。
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);