android - seleccionar - botón de opción múltiples filas
radio group que es (3)
Desde la búsqueda, no parece haber una manera de hacerlo, ya que RadioGroup usa LinearLayout, que no se ajusta. Como los botones de radio deben ser hijos directos para el grupo de radio, no puede agregar subdistribuciones al grupo de radio.
Esto significa que tendrá que implementar este comportamiento de disposición de forma manual. Dos posibles opciones son:
- Cree una copia de RadioGroup para ampliar un diseño diferente o, al menos, permitirle controlarlo dinámicamente.
- Implemente su propio diseño personalizado para reemplazar
RadioGroup
que amplíe un diseño de su elección, e implementeOnClickListener
. Hay un buen ejemplo aquí .
Quiero mostrar 6 botones de radio del mismo grupo de radio. Pero los 6 botones de radio permanecen en la misma línea y salen de la pantalla. ¿Cómo mostrarlos en dos filas (3 botones de radio cada uno)? Intenté todo lo posible para mí (soy nuevo en Android).
Dinámicamente generado por marginTop y marginLeft, para ajustar la necesidad de estar en la misma línea de radiobutton. Primero, obtenga el ancho de la pantalla, establezca los layoutparams marginLeft para el ancho de pantalla de la mitad, la altura del marginTop debe ajustarse de acuerdo con el radiobutton.eg específico:
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);
Una respuesta simple sería envolver su RadioGroup en ScrollView para que el usuario pueda desplazarse a los botones que no aparecen en la pantalla (no son realmente elegantes, pero tampoco son intensivos en cuanto a los códigos).