RadioGroup extendiendo RelativeLayout?

Estoy tratando de hacer una cuadrícula de botones de radio para mi aplicación, lo que he aprendido es que esto no es posible utilizando regular RadioGroup ya que se extiende LinearLayout y si se trata de arreglar los RadioButtons utilizando RelativeLayout INSIDE el RadioGroup el RadioGroup doesn ' T vea los Buttons dentro de RelativeLayout .

Así que para arreglar esto quiero hacer un RadioGroup personalizado que extienda RelativeLayout en lugar de LinearLayout.

¿Cómo hago esto?

ACTUALIZACIÓN: hice lo que usted dijo pero tengo estos errores que no sé cómo fijar en el archivo de la clase:

 Description Resource Path Location Type RadioGroup_checkedButton cannot be resolved or is not a field RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 81 Java Problem The constructor RelativeLayout.LayoutParams(int, int, float) is undefined RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 265 Java Problem The method setOnCheckedChangeWidgetListener(CompoundButton.OnCheckedChangeListener) is undefined for the type RadioButton RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 363 Java Problem The method setOnCheckedChangeWidgetListener(null) is undefined for the type RadioButton RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 377 Java Problem VERTICAL cannot be resolved to a variable RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 68 Java Problem Widget_CompountButton_RadioButton cannot be resolved or is not a field RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 79 Java Problem 

Necesitas obtener el código fuente de RadioGroup desde aquí , reemplazar todas las entradas de LinearLayout por RelativeLayout .

Agregue este código a algún archivo xml de su proyecto (normalmente su nombre es attrs.xml):

 <resources> <declare-styleable name="RadioGroup"> <attr name="android:checkedButton" /> </declare-styleable> </resources> 

Reemplace los constructores de RadioGroup con estos:

 public RadioGroup(Context context) { super(context); if (!isInEditMode()) { init(); } } public RadioGroup(Context context, AttributeSet attrs) { super(context, attrs); if (!isInEditMode()) { TypedArray attributes = context.obtainStyledAttributes( attrs, R.styleable.RadioGroup, 0, android.R.style.Widget_CompoundButton_RadioButton); int value = attributes.getResourceId(R.styleable.RadioGroup_checkedButton, View.NO_ID); if (value != View.NO_ID) { mCheckedId = value; } attributes.recycle(); init(); } } 

Quite el constructor siguiente de la clase interna LayoutParams :

 public LayoutParams(int w, int h, float initWeight) { super(w, h, initWeight); } 

Reemplazar todas las ocurrencias de las llamadas al método setOnCheckedChangeWidgetListener() con el método setOnCheckedChangeListener() . IMPORTANTE : En este caso, no será posible utilizar este método de un código que utiliza este widget.

No he probado esto, pero espero que esto funcione.

Copia la fuente de RadioGroup desde aquí y edítala para cambiarla para extender RelativeLayout en lugar de LinearLayout.

  • FloatingActionButton con icono animado
  • Las clases siguientes no pudieron ser instanciadas: - android.support.v7.widget.Toolbar
  • Android: conflicto de ID cuando se crean 3 pestañas o más
  • ¿Definir el logotipo personalizado para ActionBar (diferente de Logo) en XML?
  • ¿Por qué mis elementos de ListView no se pueden hacer clic?
  • Android, Almacenamiento y recuperación de texto
  • Guía de diseño XML de Android
  • ¿El android string.xml soporta cualquier otra forma de xml?
  • ¿Cómo puedo acelerar el análisis XML de Android?
  • InflateException: Línea de archivo XML binario # 22: Error al inflar la clase <unknown>
  • Cómo ajustar el tamaño de los botones según el tamaño de la pantalla en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.