android: drawableLeft margin and / o padding



Answers

TextView tiene una propiedad android:drawablePadding que debería funcionar:

android: drawablePadding

El relleno entre los dibujables y el texto.

Debe ser un valor de dimensión, que es un número de coma flotante con una unidad como "14.5sp". Las unidades disponibles son: px (píxeles), dp (píxeles independientes de la densidad), sp (píxeles escalados según el tamaño de fuente preferido), in (pulgadas), mm (milímetros).

Esto también puede ser una referencia a un recurso (en la forma "@ [paquete:] tipo: nombre") o atributo de tema (en la forma "? [Paquete:] [tipo:] nombre") que contiene un valor de este tipo .

Esto corresponde al símbolo de recurso de atributo global drawablePadding.

Question

¿Es posible establecer el margen o relleno para la imagen que agregamos con el android:drawableLeft ?




Sí. use drawablePadding de la siguiente manera,

<TextView
        android:id="@+id/tvHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Settings and Contents"
        android:drawableLeft="@drawable/icon_success"
        android:drawablePadding="10dp" />



textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);

addressTitleView.setCompoundDrawablePadding();



android:drawablePadding es la forma más fácil de dar relleno al icono dibujable, pero no se puede dar un relleno lateral específico como relleno. paddingRight o relleno. paddingRight paddingLeft extraíble. Para lograrlo, hay que profundizar en él. Y si aplica paddingLeft o paddingRight a Edittext , colocará relleno en todo el Edittext junto con un icono Edittext .




En lugar de Button usa LinearLayout con ImageView y TextView dentro. En elementos secundarios como ImageView y TextView usa android: duplicateParentState = "true".




Lanzaré mi respuesta al ring también. Si desea hacer esto programáticamente, puede hacer lo siguiente.

final Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.somedrawable);
final boolean isLTR = ViewCompat.LAYOUT_DIRECTION_LTR == ViewCompat.getLayoutDirection(this);
final int iconInsetPadding = getResources().getDimensionPixelSize(R.dimen.icon_padding);

final Drawable insetDrawable = new InsetDrawable(drawable, isLTR ? 0 : iconInsetPadding, 0, isLTR ? iconInsetPadding : 0, 0);

Esto agregará el relleno al final del dibujo donde el final significará izquierda / derecha, dependiendo de si el teléfono está en LTR o RTL.




Puedes usar android:drawableLeft="@drawable/your_icon" para configurar el dibujable para que se muestre en el lado izquierdo. Para establecer un relleno para el drawable, debe usar el android:paddingLeft o android:paddingRight para configurar el android:paddingRight izquierdo / derecho, respectivamente.

android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"





Related