programacion - Android cómo cambiar<item> ancho y alto
manual de programacion android pdf (6)
A diferencia de alguien dicho, también hay atributos de android:width
y android:height
para <item>
. (Gracias a por publicar un ejemplo de eso)
android:width
y android:height
para drawable son similares a android:layout_width
y android:layout_height
para View
s, con la única diferencia de que no se pueden establecer en match_parent
ni wrap_content
, pero puede lograr el comportamiento de match_parent
configurando el atributo android:gravity
a la left|right
o al start|end
(para igualar el ancho del padre) y top|bottom
(para la altura del padre correspondiente).
Desafortunadamente, esos atributos están disponibles solo desde la API 23 .
Sin embargo, considerando el método anterior que sugerí en lugar de match_parent
y que los match_parent
android:width
y android:height
están disponibles para el elemento <size>
(que se debe colocar dentro de una <shape>
) sin ninguna restricción de API, puede usar una solución simple:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle">
<size
android:width="152dp"
android:height="152dp"/>
<solid
android:color="#00FFFFFF"/>
</shape>
</item>
<item>
<bitmap
android:gravity="left|right|top|bottom"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
La solución anterior aprovecha que tiene un <item>
tamaño (con una <shape>
transparente) y un <item>
tamaño (con un <bitmap>
) que tiene android:gravity
configurada a la left|top|right|bottom
para hacer coincidir ambas Dimensiones de los padres. Por lo tanto, el tamaño real del <bitmap>
será determinado por el del <item>
tamaño único en el mismo padre.
Estoy haciendo una <layer-list>
para dibujable.
Tengo mi imagen de fondo y quiero que la segunda capa sea más pequeña, pero parece que no importa lo que esté escribiendo dentro de mi android:layer_width
y android:layer_height
.
El segundo tamaño de capa sigue siendo el mismo.
Aquí está mi xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<item
android:drawable="@drawable/picuser"
android:layout_width="50dp"
android:layout_height="50dp" />
<item
android:drawable="@drawable/ic_launcher"
android:layout_width="10dp"
android:layout_height="10dp" />
</layer-list>
Desde el nivel de API 23 y superior, puede establecer el ancho y alto en un elemento
<item
android:drawable="@drawable/splash_logo"
android:height="100dp"
android:width="100dp"/>
NOTA: es android:width
lugar de android:layout_width
Espero que esto te ponga en la dirección correcta:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/picuser"/>
<item>
<bitmap
android:src="@drawable/ic_launcher"
android:gravity="center" />
</item>
</layer-list>
Como puede ver here , <item>
no tiene atributos layout_width
/ layout_height
.
Esto es una especie de trabajo, pero funcionó para mí, puedes usar el relleno y hará que el segundo dibujo sea más pequeño.
<item android:drawable="@drawable/circyle"/>
<item android:drawable="@drawable/plus"
android:top="10dp" android:bottom="10dp"
android:right="10dp" android:left="10dp"/>
Intenté mucho, no he encontrado una buena manera de establecer el centro del logotipo solo por el diseño XML. Finalmente encontré una solución como la siguiente:
mToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ImageView imageView = (ImageView)mToolbar.findViewById(R.id.logo);
if( mToolbar == null ){
return;
}
int toolbarWidth = mToolbar.getWidth();
int imageWidth = imageView.getWidth();
imageView.setX((toolbarWidth-imageWidth)/2);
}
});
layout_toolbar.xml:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
style="@style/Toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:background="@drawable/toolbar_background"
android:focusable="false"
app:titleTextAppearance="@style/AppTheme.Toolbar.Title">
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/toolbar_logo"/>
</android.support.v7.widget.Toolbar>
<?xml version="1.0" encoding="utf-8"?>
<!-- The android:opacity=”opaque” line — this is critical in preventing a flash
of black as your theme transitions. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<!-- The background color, preferably the same as your normal theme -->
<item android:drawable="@android:color/white"/>
<item
android:height="100dp"
android:width="100dp"
android:gravity="center">
<bitmap
android:src="@drawable/ic_launcher_bc_512"/>
</item>
Prueba esto