¿Cómo mostrar la checkbox de Android en el lado derecho?

Por defecto, la checkbox de Android muestra el texto en el lado derecho y la checkbox en la izquierda
Quiero mostrar la checkbox en el lado derecho con el texto a la izquierda

¿Cómo logro esto?

No puedo pensar en una forma con el estilo, pero podría simplemente configurar el texto de la checkbox en nada, y poner un TextView a la izquierda de la checkbox con el texto deseado.

Creo que es demasiado tarde para responder a esta pregunta, pero en realidad hay una manera de lograr su objective. Solo necesita agregar la siguiente línea a su checkbox:

android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple" 

También puede usar su drawable personalizado para la checkbox.

Y para un radioButton:

 android:button="@null" android:drawableRight="@android:drawable/btn_radio" 

Y si quieres hacerlo programáticamente:

Defina un diseño y asígnele el nombre RightCheckBox y copie las siguientes líneas:

   

y cuando necesita agregarlo programáticamente, solo necesita inflarlo en un CheckBox y agregarlo a la vista raíz.

 CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null); rootView.addView(cb); 

Tu puedes hacer

  

La siguiente línea es suficiente

 android:layoutDirection="rtl" 

Puede agregar android:layoutDirection="rtl" pero solo está disponible con API 17.

Solo copia esto:

      

¡Feliz encoding! 🙂

El texto de la checkbox puede no estar alineado a la izquierda con

 android:button="@null" android:drawableRight="@android:drawable/btn_radio" 

en algún dispositivo. Puede usar CheckedTextView como reemplazo para evitar el problema,

  

y este enlace será útil: Alinee el texto a la izquierda, la checkbox a la derecha

Según lo sugerido por @The Berga, puede agregar android:layoutDirection="rtl" pero solo está disponible con API 17.
para la implementación dinámica, aquí va

 chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

además de Hazhir imput, para este problema es necesario inyectar esa propiedad en la checkbox configuración xml android: paddingLeft = “0dp”, esto es para evitar el espacio vacío en la checkbox del lado izquierdo.

Agregando otra respuesta a esta pregunta que usa CheckedTextView Si alguien está tratando de hacerlo programáticamente. También tiene la opción de usar imágenes personalizadas para la checkbox. Y se puede hacer en una sola vista

 final CheckedTextView checkBox = new CheckedTextView(getApplicationContext()); checkBox.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); checkBox.setId(1); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (checkBox.isChecked()){ checkBox.setChecked(false); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); }else{ checkBox.setChecked(true); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_on_background); } } }); checkBox.setTextColor(Color.BLACK); checkBox.setGravity(Gravity.LEFT); checkBox.setText("hi"); 

Desde XML si quieres iniciar –

  

El siguiente enlace muestra cómo renderizar varios objetos estándar de vista de Android con una checkbox animada a la derecha configurando el dibujable derecho.

Establezca el fondo para obtener un efecto dominó.

[enlace al sitio web con la checkbox de ejemplo en el lado derecho e izquierdo.] [1] http://landenlabs.com/android/uicomponents/uicomponents.html#checkbox

                

Sample checkline.xml (en dibujable, vea el enlace para la versión animada en drawable-v21)

Muestra transparent_ripple.xml (en drawable-v21)

            


Muestra transparent_ripple.xml (en drawable, highlight only no ripple available

           

Si no es obligatorio utilizar un CheckBox , simplemente podría usar un Switch . Un interruptor muestra el texto en el lado izquierdo por defecto.