Entonces, en este momento tengo un botón que se parece a la primera imagen de arriba. ¿Cómo puedo reducir el relleno alrededor del texto dentro del propio botón (para parecerse más a la segunda imagen)?
El ancho y la altura del diseño se establecen como:
android:layout_width="match_parent"
android:layout_height="wrap_content"
La forma de estilo personalizado tiene parámetros "
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
El resto son atributos de color y valores de radios.
Para que quede claro, quiero que el marco del botón abrace el texto "Iniciar sesión" más cerca.
Se agradece enormemente toda la ayuda y los comentarios. Gracias.
android:includeFontPadding="false"
Respuestas:
Me tomó una eternidad encontrar esto, pero el "relleno" alrededor del texto en un botón no es realmente relleno en absoluto. El estilo Widget.Button predeterminado incluye una propiedad minHeight. Cambiar minHeight en el botón le permitirá ajustar el acolchado como se esperaba.
<Button android:id="@+id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/test" android:textColor="@color/black" android:minHeight="40dip"/> <style name="Widget.Holo.Button" parent="Widget.Button"> <item name="android:background">@android:drawable/btn_default_holo_dark</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> <item name="android:textColor">@android:color/primary_text_holo_dark</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> </style>
fuente
prueba esto en tu archivo shape.xml personalizado
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="1dp" android:padding="1dp">
también puedes hacer cambios en el xml de tu botón
android:layout_width="wrap_content" android:layout_height="wrap_content"
fuente
En la biblioteca de componentes de materiales,
MaterialButton
tiene un estilo predeterminado coninsetBottom
yinsetTop
con un valor de6dp
.Puede cambiarlos en el diseño:
<com.google.android.material.button.MaterialButton android:insetTop="0dp" android:insetBottom="0dp" ../>
o en un estilo:
<style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..> <item name="android:insetTop">0dp</item> <item name="android:insetBottom">0dp</item> </style>
fuente
Si desea un acolchado superior e inferior más pequeño, use esto:
android:paddingTop="2dp" android:paddingBottom="2dp"
fuente
android:padding
oandroid:layout_margin"
en las vistas principales de<shape />
.Puede usar el estilo sin bordes en AppCompatButton como se muestra a continuación. También use el color de fondo que prefiera.
Código de botón
<androidx.appcompat.widget.AppCompatButton android:id="@+id/button_visa_next" android:background="@color/colorPrimary" style="@style/Widget.AppCompat.Button.Borderless.Colored" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_normal" android:text="@string/next" android:textColor="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />
Salida:
fuente