Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Mantener texto en TextView con drawableLeft centrado

En mi aplicación tengo una barra de encabezado que consta de un solo textview con fill_parent como ancho, que tienen un color de fondo específico y un poco de texto centrado. Ahora quiero agregar un dibujable en el lado izquierdo de la barra de encabezado, por lo que establecer el drawableLeft y seguro que el texto y la imagen se muestra. Sin embargo, el problema aquí es que el texto ya no está correctamente centrado, por ejemplo, cuando se añade el dibujable, el texto se desplaza un poco hacia la derecha, como se muestra en las capturas de pantalla:

Sin dibujar
Con dibujable

  • Cada proyecto dice error después de la actualización de Android ADT
  • No se encontró ningún recurso que coincida con el nombre dado
  • Cómo recuperar array de objetos como resultado del servicio web KSOAP en Android?
  • Cómo abrir una ruleta con un solo clic cuando otra ruleta está abierta
  • Estrategia de licencias de Android para publicar en Google Play y en la tienda de aplicaciones de Amazon
  • Android Custom View no maneja la transparencia / alpha de la manera correcta
  • ¿Hay de todos modos puedo centrar el texto correctamente y tener el dibujable posicionado como está arriba sin usar un artículo de disposición adicional (como un LinearLayout)?

  • DialogFragment sin FragmentActivity
  • Problemas de procesamiento Excepción generada durante la renderización: com / android / util / PropertiesMap
  • ¿Existe alguna base de datos de información que enumera todos los dispositivos y especificaciones móviles?
  • ¿Cuál es el equivalente de "android: windowSoftInputMode" para un sitio web?
  • Cómo establecer las dos líneas de un ListView utilizando simple_list_item_2?
  • SSLHandshakeException en Android 4.4 y menor
  • 13 Solutions collect form web for “Mantener texto en TextView con drawableLeft centrado”

    La manera más simple de obtener que es:

    <RelativeLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/head" > <ImageView android:id="@+id/cat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:onClick="onClick" android:layout_marginTop="10dp" android:layout_alignParentLeft="true" android:src="@drawable/btn_back_d" /> <TextView android:id="@+id/TvTitle" android:layout_width="match_parent" android:layout_height="match_parent" android:text="" android:layout_centerHorizontal="true" android:textColor="#000000" android:textSize="20sp"/> 

    Dónde

    • ImageView tiene la propiedad alignParentLeft definida true y
    • TextView tiene el centroHorizontal establecido true

    Aunque frágil, puede evitar el uso de un diseño de envoltura estableciendo un relleno negativo en el dibujable:

     <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:drawableLeft="@drawable/icon" android:drawablePadding="-20sp" android:text="blah blah blah" /> 

    Tendrás que ajustar el relleno al ancho del dibujable, pero te quedarás con un único TextView en lugar de un LinearLayout extra o etc.

    Tuve el mismo problema y lo resolví con pequeños cambios en Textview,

     <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:drawableLeft="@drawable/search_red" android:text="your text goes here" /> 

    Ese trabajo para mí.

     <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/trusted" android:gravity="center" android:text="@string/trusted"/> </LinearLayout> 

    Puedes usar android:gravity="center_vertical" para centrar el texto verticalmente con la imagen. O puede ser centrado dentro del textView usando android:gravity="center" .

     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:drawableLeft="@drawable/icon" android:text="Your text here" /> 

    Usa de esta manera

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/White" > <RelativeLayout android:id="@+id/rlheader" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentTop="true" android:background="@color/HeaderColor" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Header_Title" /> <ImageView android:id="@+id/ivSetting" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:src="@drawable/setting" /> </RelativeLayout> </RelativeLayout> 

    Se parece algo a este complemento de mi proyecto de demostración

    Imagen de cabecera

    Me he enfrentado a un problema similar. Se TextView mediante el uso de TextView único con los layout_width="wrap_content" y layout_gravity="center" :

     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/some_drawable" android:text="some text" android:layout_gravity="center" android:gravity="center" /> 

    U puede establecer su encabezado como este

     <RelativeLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/head" > <ImageView android:id="@+id/cat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:onClick="onClick" android:layout_marginTop="10dp" android:src="@drawable/btn_back_" /> <RelativeLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > <TextView android:id="@+id/TvTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:textColor="#000000" android:textSize="20sp"/> </RelativeLayout> </RelativeLayout> 

    Solo dale la cantidad de Textview, fuente de la imagen según tu necesidad

    Drawable es parte del TextView, por lo que la altura del textview será la altura del drawable si la altura de su texto es más pequeña que la altura drawable.

    Puede establecer el atributo de gravedad de TextView en center_vertical, por lo que el texto estará en el centro.

    Puede establecer el padre del TextView como RelativeLayout cuyo ancho es match_parent.

     <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/edit_location_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/add_location_text_view" android:gravity="start|center_vertical" android:layout_centerHorizontal="true" android:drawableStart="@android:drawable/ic_menu_edit" android:text="Edit Location" /> </RelativeLayout> 

    Así es como se ve el resultado.

     <TextView android:id="@+id/distance" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:drawableLeft="@drawable/distance" android:drawablePadding="10dp" android:padding="10dp" android:textAlignment="center" android:textColor="#ffffff" android:textSize="20sp" /> 

    Una solución simple es usar una imagen transparente con el mismo tamaño en el lado opuesto de la vista de texto. En mi ejemplo he copiado mi vector_image real y he cambiado los colores para que sean transparentes.

     <TextView android:id="@+id/name" style="@style/TextStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableEnd="@drawable/ic_vector_caret_down_green" android:drawableStart="@drawable/ic_vector_space_18" android:gravity="center" android:padding="12dp" android:textColor="@color/green"/> 

    Simple como esto .. intentarlo ..

      <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center|left" android:drawableLeft="@drawable/icon" android:text="something something" /> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.