android - tipos - que contiene una etiqueta de un producto
diseño de Android: esta etiqueta y sus hijos pueden ser reemplazados por uno<TextView/> y un compuesto dibujable (9)
A veces es posible reemplazar ImageView
(o múltiples) y TextView
con un TextView
con compuesto (s) compuesto (s). NO hay muchos parámetros que se puedan aplicar al compuesto dibujable usando la API nativa y esta biblioteca TextViewRichDrawable , pero si puede administrar un TextView en lugar de usar LinearLayout definitivamente debe usarlo .
La lista de atributos y parámetros que se pueden aplicar a compuestos elaborables:
Tamaño: ( SÍ, realmente ):
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
app:compoundDrawableHeight="24dp"
app:compoundDrawableWidth="24dp"/>
Incluso establece el recurso vectorial como dibujable:
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
app:drawableTopVector="@drawable/some_vector_drawble"
app:drawableEndVector="@drawable/another_vector_drawable" />
Drawable''s Padding usando API nativa android:drawablePadding
-> link
Aquí hay un ejemplo:
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 debería hacerse 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, le dará al usuario la opción de elegir otra imagen.
Cuando seguí el código anterior, el texto dentro de TextView no se establece correctamente. Debe establecer su gravedad en el centro para comenzar a lograr lo que se muestra en la pregunta.
La vista de texto se ve así:
<TextView
android:id="@+id/export_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableLeft="@drawable/up_arrow"
android:drawableStart="@drawable/up_arrow"
android:gravity="center|start"
android:text="....."
android:textSize="@dimen/font_size15" >
</TextView>
Otro enfoque es incrustar ViewImage en otro LinearLayout (permitir manejarlo solo con id):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/blue_3"
android:layout_gravity="center_horizontal"
android:paddingTop="16dp" />
</LinearLayout>
<TextView
android:id="@+id/tvPrompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="16dp"
android:text="@string/xy" />
Para ampliar la respuesta de Romain Guy, aquí hay un ejemplo.
Antes de:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="5dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="My Compound Button" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_drawable" />
</LinearLayout>
Después:
<TextView
android:layout_marginTop="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Compound Button"
android:drawableRight="@drawable/my_drawable" android:padding="5dp" />
Pensé que trataría de obtener algunos puntos extra para esto también: puedes agregar relleno entre la imagen y el texto usando android:drawablePadding
. https://.com/a/6671544/1224741
Si no desea cambiar ImageView y TextView, puede cambiar la versión en AndroidManifest.xml como:
<uses-sdk`
android:minSdkVersion="8"
android:targetSdkVersion="18"
/>
Si su versión es android: targetSdkVersion = "17" cámbiela por "18".
Espero que esto rectifique. Lo hice y lo hice bien
Un LinearLayout
que contiene un ImageView
y un TextView
puede TextView
más eficientemente como un compuesto compuesto (un solo TextView
, usando los TextView
, TextView
, TextView
y / drawableBottom
para dibujar una o más imágenes adyacentes al texto).
Si los dos widgets se compensan entre sí con márgenes, esto puede reemplazarse con un atributo drawablePadding
.
Hay una solución rápida de pelusa para realizar esta conversión en el plugin de Eclipse.
De: Android API oficial de documentos
TextView
el TextView
y el ImageView
en uno, usando los métodos setCompoundDrawable*()
, o usando android:drawableLeft
.
This tag and its children can be replaced by one <TextView/> and a compound drawable
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:contentDescription="."
android:padding="3dp"
android:src="@drawable/tab_home_btn">
</ImageView>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="首页"
android:textSize="10sp"
android:textColor="#ffffff">
</TextView>
</LinearLayout>