2010-04-13 25 views

Respuesta

9

Como indica Ravi Vyas, puede hacerlo usted mismo con un TextView y un RadioButton. No hay nada intrínseco en RadioButton para reposicionar el botón relativo al texto, desde mi lectura del código fuente.

Además, tenga en cuenta que el hecho de que esto sea posible no significa que sea una buena idea. Por ejemplo, en el iPhone, es posible que no se le permita enviar su aplicación si se pierde demasiado con esto, ya que tienen pautas de interfaz humana que las aplicaciones deben cumplir. Android te ofrece mucha más cuerda: no cuelgues a los usuarios con ella.

16

que quería hacer la misma cosa, y sin tener que ampliar otra clase (o dos, ya que tendría que al menos extender CompoundButton y RadioButton) para algo que debería ser parte de la aplicación desde el principio. Ya que estaba usando un RadioGroup, que no funcionará si pones decir, un RadioButton y un TextView en un contenedor de diseño. Mi solución es ciertamente algo hackosa, pero ... funciona.

1) establecer el relleno dejó a 40 2) Establecer margen Disposición izquierda a -36dp

En este punto, el botón de radio original estará fuera de la vista, y la vista texto se sienta en el extremo izquierdo con un margen de 4dp.

3) Establecer la derecha Disponibles a @android: dibujable/btn_radio

Ahora tendrá un RadioButton nativo con el texto a la izquierda y un botón a la derecha, que funcionará con un RadioGroup.

@CommonsWare

Vale la pena mencionar que es increíblemente irónico para abrir Human Interface Guidelines en respuesta a esta pregunta en particular. Especialmente teniendo en cuenta que ajustar el diseño de RadioButton para colocar el botón en el extremo derecho, lograría la coherencia con el diseño del menú de Spinner. Estoy completamente de acuerdo con su opinión sobre el asunto, pero es muy posible que NickTFried intentara compensar que Android se "colgara" a sí mismo en ese sentido.

+5

Puede usar android: button = "@ null" para eliminar el botón izquierdo (en lugar del paso 1) – EtienneSky

+0

cuando configuro Android: button = "@ null", el botón de opción no se verifica (hace clic). Estoy haciendo algo mal. ayuda http://stackoverflow.com/questions/28052820/android-custom-radio-button-not-getting-checked –

8

El CheckedTextView funciona bien si está trabajando con un solo "botón de radio".

Pero necesitaba para conservar la funcionalidad de alternar entre los botones de opción de un grupo así que esto funcionó mejor para mí:

 <RadioGroup 
     android:id="@+id/radioGroup1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <RadioButton 
      android:id="@+id/radioButton1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:button="@null" 
      android:drawableRight="@android:drawable/btn_radio" 
      android:gravity="left|center_vertical" 
      android:layout_marginLeft="-32dp" 
      android:text="Radio Button 1" /> 

     <RadioButton 
      android:id="@+id/radioButton2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:button="@null" 
      android:drawableRight="@android:drawable/btn_radio" 
      android:gravity="left|center_vertical" 
      android:layout_marginLeft="-32dp" 
      android:text="Radio Button2" /> 

    </RadioGroup> 

Ajuste el android:layout_marginLeft según sea necesario.

6

Para idiomas RTL i.e Arabic utilizar este:

 <RadioGroup 
      android:id="@+id/rgNewsFilter" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <RadioButton 
       android:id="@+id/rbAllNews" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="-32dp" 
       android:button="@null" 
       android:drawableRight="@android:drawable/btn_radio" 
       android:gravity="right|center_vertical" 
       android:text="ذنيسبمنشخصث" 
       android:textColor="#ffffff" /> 

      <RadioButton 
       android:id="@+id/rbMyTeam" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="-32dp" 
       android:button="@null" 
       android:drawableRight="@android:drawable/btn_radio" 
       android:gravity="right|center_vertical" 
       android:text="تشسيبتسيتبتسيب" 
       android:textColor="#ffffff" /> 
     </RadioGroup> 
0

Android se ha construido en un diseño que puede utilizar - android.R.layout.simple_list_item_single_choice:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Copyright (C) 2008 The Android Open Source Project 

    Licensed under the Apache License, Version 2.0 (the "License"); 
    you may not use this file except in compliance with the License. 
    You may obtain a copy of the License at 

      http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 

<CheckedTextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeightSmall" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorSingle" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" /> 

Si desea modificarlo, puede copiar y pegar lo anterior en un nuevo archivo XML y luego use la etiqueta <include> para incluirla en sus otros diseños (bajo Apache 2.0 License). También puede usarlo como un elemento de la lista, y dejarlo sin cambios.

Cuestiones relacionadas