El siguiente código es para mostrar un botón personalizado en Android. Por desgracia, todos los valores de relleno en los diferentes lugares afectar la manera en que el botón se presenta sólo para Android 2.3, pero en Android 4.X no tiene ningún efecto, es decir, el relleno es siempre el mismo, independientemente de lo que se establece aquí. Por qué?

El diseño de XML:

<Button
    android:id="@+id/sample_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_caption"
    android:padding="6dp"
    android:layout_marginBottom="6dp"
    android:layout_marginRight="6dp"
    style="@style/CustomButton"
    android:textSize="16sp" />

El estilo:

<style name="CustomButton">
    <item name="android:layout_gravity">center_horizontal</item>
    <item name="android:padding">6dp</item>
    <item name="android:background">@drawable/custom_button</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:gravity">center</item>
    <item name="android:textStyle">bold</item>
</style>

La imagen:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid
                android:color="#60ff0000" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="6dp"
                android:top="6dp"
                android:right="6dp"
                android:bottom="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid
                android:color="#90ff0000" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="6dp"
                android:top="6dp"
                android:right="6dp"
                android:bottom="6dp" />
        </shape>
    </item>
</selector>

Cuando me puse de todos estos valores de relleno a un valor pequeño como 2, el botón se muestra casi sin relleno en Android 2.3.3 (probablemente en lo correcto), pero con un relleno que es todavía muy grande en Android 4.X (probablemente equivocada). Puede que alguien vea por qué?

OriginalEl autor caw | 2013-01-24

2 Comentarios

  1. 31

    De Android Holo tema establece un minWidth y minHeight en el sistema de styles.xml recursos para Holo.Widget.Botón que especifica las reglas en adición a los utilizados por los no-holo botón, Widget.Botón. Incluso con un pequeño botón de título, el botón hasta 64x48dip en Android 4.2.

    <Button
        android:id="@+id/sample_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Z"
        android:padding="6dp"
        android:minHeight="1dp"
        android:minWidth="1dp"
        android:layout_marginBottom="6dp"
        android:layout_marginRight="6dp"
        style="@style/CustomButton"
        android:textSize="16sp" />
    Feliz de ayudar – la moraleja de esta historia es comprobar siempre el estilo/el código en Github para pistas con respecto a comportamiento por defecto.
    Sí, tengo que 😉

    OriginalEl autor David Snabel-Caunt

  2. 0

    David de la respuesta en realidad puede ser el problema.

    Sin embargo, yo pienso que si el min anchura y la altura son 48/64dp, cambiando el relleno de los 6dp a 2pd o viceversa, no debe hacer una gran diferencia, a menos que usted reales botón ya está a la derecha en la que 48/64 dp tamaño.

    Si este es el caso, me pregunto si podría ser un bug en Android.
    Si no hay relleno en la Vista se especifica, el relleno en el fondo de la imagen se utiliza (si alguno)
    Si el relleno a la Vista está especificado, cualquier relleno en el fondo de la imagen es ignorado y el relleno de establecer en la Vista se utiliza.

    Sólo por el bien de ella, ¿has probado a hacer los rellenos muy grandes en lugar de las pequeñas y ver si tiene algún efecto?

    Usted podría estar en lo correcto. Sin conocer el valor de @string/button_caption y ver exactamente lo que Marco se ve, sólo se puede especular. Estoy de acuerdo en que podría ser un error, aunque yo estaría muy sorprendido si la imagen de relleno que estaba causando. Que el valor de relleno sólo debería afectar el dibujo del fondo.
    Gracias! Podría haber sido un error, que estaban en lo correcto. Tuve que comprobar – y es no. Todo está funcionando bien y la explicación a este problema es lo que David escribió.

    OriginalEl autor Streets Of Boston

Dejar respuesta

Please enter your comment!
Please enter your name here