Me gustaría especificar sólo una vez en res/values/styles.xml el tamaño de las dos casillas de verificación y sus cuatro formas dibujables

  1. res/drawable/cb1_checked.xml
  2. res/drawable/cb1_unchecked.xml
  3. res/drawable/cb2_checked.xml
  4. res/drawable/cb2_unchecked.xml.

De esta manera el tamaño aparecer una vez en el estilo, en lugar de las cuatro de la dibujables.

Ninguno de los dos intentos de abajo de trabajo. Puedes sugerir una solución? (Si usted ve lo que está mal con estos dos intentos, por favor hacer mención de ella.)

—————————————————————-Intento 1—————————————————————-

Reemplazar

res/drawable/cb1_checked.xml

<size android:width="24dp"
      android:height="24dp" />

con

res/values/styles.xml

<item name="android:layout_width">24dp</item>
<item name="android:layout_height">24dp</item>

—————————————————————-Intento 2—————————————————————-

Agregar

res/values/styles.xml

<item name="android:background">cb_background</item>

y definir un fondo dibujable

res/drawable/cb_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00FF00"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

—————————————————————-Added—————————————————————-

Aquí es el conjunto completo de archivos XML:

res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/MyLL"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <CheckBox
        android:id="@+id/cb1"
        style="@style/CB_style"
        android:button="@drawable/cb1_selector"
        android:height="@dimen/my24sp" />

    <CheckBox
        android:id="@+id/cb2"
        style="@style/CB_style"
        android:button="@drawable/cb2_selector"
        android:height="@dimen/my24sp" />

</LinearLayout>

res/values/styles.xml

<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<style name="AppTheme" parent="AppBaseTheme">
</style>

<style name="CB_style" parent="@android:style/TextAppearance.Medium">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_gravity">center_horizontal</item>
    <item name="android:gravity">center</item>
    <item name="android:checked">false</item>
</style>

res/drawable/cb1_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize="true">

    <item android:state_checked="true"
          android:drawable="@drawable/cb1_checked" />

    <item android:state_checked="false"
          android:drawable="@drawable/cb1_unchecked" />

</selector>

res/drawable/cb1_checked.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FF0000"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

res/drawable/cb1_unchecked.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#880000"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

(y lo mismo para el cb2 selector y activada/desactivada dibujables)

OriginalEl autor Calaf | 2013-05-22

2 Comentarios

  1. 6

    Hay una solución débil, débil en el sentido de que android:ancho y android:altura todavía aparece cuatro veces, pero al menos la dimensión puede ser ajustada mediante el establecimiento de un sólo parámetro.

    Para cada uno de los cuatro dibujables, agregar

    <size android:width="@dimen/my24dp"
          android:height="@dimen/my24dp" />

    y también definir la dimensión

    res/values/dimens.xml

    <dimen name="my24dp">24dp</dimen>

    Así que la pregunta sigue siendo: ¿el tamaño no se especifica en ninguna parte en el dibujables?

    Yo estoy haciendo, literalmente, la misma cosa, y esta respuesta obras. OP debe aceptar esta respuesta.
    Yo hice lo mismo pero no es un trabajo. Tengo el siguiente error Error:Error: Width (0) and height (0) cannot be <= 0. Tengo min skd tarket conjunto de 19 años.
    Suena simple, pero cualquier cosa que uno podría sugerir aquí sería sólo una conjetura. Verificar y publicar una pregunta.

    OriginalEl autor Calaf

  2. 0

    se puede almacenar en su tamaño como un recurso en el res/values/dimens.xml como

    <resources>
        <dimen name="checkbox_width">24dp</dimen>
    </resources>

    y poner este valor a sus diseños como

    <CheckBox
            android:layout_width="@dimen/checkbox_width"
            android:layout_height="@dimen/checkbox_width" />
    Que lo haría, pero no funciona.
    de verdad? ¿cuál es el error? después de crear la nueva dimens.xml usted debe limpiar su proyecto.. que en java es crear el id de referencia para obtener el valor con su @dimen/checkbox_width
    No hay ningún error. No aparece nada en Eclipse o el dispositivo. Puedes buscar en el conjunto completo de archivos que me han añadido y ver si hay algo que hace que su solución no funciona en mi lado?

    OriginalEl autor longilong

Dejar respuesta

Please enter your comment!
Please enter your name here