Cuando ejecuto el diseño en un archivo XML específico, obtengo esto:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Qué cambio se debe hacer para el siguiente código xml:
<LinearLayout android:id="@+id/name_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/grouplist_single_left_grey_area" >
<ImageView android:id="@+id/photo_image"
android:layout_width="@dimen/thumbnail_width"
android:layout_height="@dimen/thumbnail_height"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:paddingRight="5dip"
android:paddingLeft="5dip"
android:layout_marginRight="5dip"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
android:src="@*android:drawable/nopicture_thumbnail"
android:background="@drawable/photo_highlight" />
<TextView android:id="@+id/name"
android:paddingLeft="5dip"
android:layout_weight="1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Así es como se ve en la pantalla:
El icono de la cámara es el predeterminado. Al hacer clic en eso, el usuario tendrá la opción de elegir otra imagen.
Respuestas:
Para ampliar la respuesta de Romain Guy, aquí hay un ejemplo.
Antes de:
Después:
fuente
Combine el
TextView
y elImageView
en uno, utilizando lossetCompoundDrawable*()
métodos de TextView o utilizandoandroid:drawableLeft
.fuente
setCompoundDrawable()
no se ocupará de tu dibujable tal como está, tienes que llamarlosetBounds
(ver API ). Para configurarlo, puede obtener los límites anteriores usando elTextView.getCompoundDrawables()
, accediendo al índice de diseño correcto y finalmente llamandogetBounds()
.Pensé que también trataría de obtener algunos puntos adicionales para esto: puede agregar relleno entre la imagen y el texto usando
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741fuente
A veces es posible reemplazar
ImageView
(o múltiples) yTextView
con unoTextView
con dibujables compuestos. NO hay muchos parámetros que se pueden aplicar al dibujable compuesto usando la API nativa y esta biblioteca TextViewRichDrawable , pero si puede administrar un TextView en lugar de usar LinearLayout, definitivamente debería usarlo .La lista de atributos y parámetros que se pueden aplicar a los elementos de diseño compuestos:
Tamaño: ( SÍ, de verdad ):
Incluso establezca el recurso vectorial como dibujable:
Relleno de Drawable usando API nativa
android:drawablePadding
-> enlaceAquí hay un ejemplo:
fuente
A
LinearLayout
que contiene unImageView
y unaTextView
se puede manejar de manera más eficiente como un estirable compuesto (una solaTextView
, utilizando eldrawableTop
,drawableLeft
,drawableRight
y / odrawableBottom
atributos para dibujar una o más imágenes adyacentes para el texto).Si los dos widgets están desplazados entre sí con márgenes, esto se puede reemplazar con un
drawablePadding
atributo.Hay una solución rápida de pelusa para realizar esta conversión en el complemento Eclipse.
De: Documentos API oficiales de Android!
fuente
Agregar
tools:ignore="UseCompoundDrawables"
a<LinearLayout>
.fuente
Cuando seguí el código anterior, el texto dentro de TextView no se configura correctamente. Debe establecer su gravedad en el centro | comenzar para lograr lo que se muestra en la pregunta formulada.
La vista de texto se ve así:
fuente
Si no desea cambiar ImageView y TextView, puede cambiar la versión en AndroidManifest.xml como:
Si su versión es android: targetSdkVersion = "17" cámbiela "18".
Espero que esto se rectifique. Lo hice y lo hice bien
fuente
Otro enfoque es incrustar ViewImage en otro LinearLayout (permite manejarlo con una sola identificación):
fuente
fuente