2011-08-18 9 views
27

Tengo problemas para configurar el tamaño de dibujar en la lista de capas. Mi XML tiene este aspecto:Cómo establecer el tamaño dibujable en la lista de capas

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item android:drawable="@drawable/menu_drawable2"/>  
</layer-list> 

Drawable1 es mayor que Drawable2, por lo que Drawable2 obtiene el tamaño. ¿Cómo anular esto y establecer el tamaño original de Drawable2? No quiero que cambie el tamaño. Intenté establecer ancho y alto, pero eso no funciona. Además, los dibujables no son mapas de bits, son selectos, así que no puedo usar el truco del mapa de bits.

+0

Realmente me gustaría saber sobre el truco del mapa de bits que mencionaste :) ¿quisiste insertar un mapa de bits en la etiqueta del artículo? – Ready4Android

+0

Yo también encuentro esta pregunta bastante relevante. Aunque tu truco escrito en la parte inferior ayuda. – PSIXO

Respuesta

0

Parece como si tuviera la mitad de la solución mediante el uso de "izquierda" y "derecha", pero aún así, esto no me deja establecer el tamaño exacto de la imagen automáticamente. Ahora mi xml se ve así:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item android:drawable="@drawable/menu_drawable2" android:right="150dp"/>  
</layer-list> 
0

la esperanza que esto ayudará a: -
Se puede utilizar un parche para dibujable nueve menu_drawable2. Puede hacer que menu_drawable2 tenga una región transparente alrededor de los bordes. Utilice esta región transparente para especificar la región estirable en nueve parches.

2

Puede usar una etiqueta insertada para esto. Por ejemplo

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item> 
     <inset android:drawable="@drawable/menu_drawable2" 
      android:insetRight="50dp" 
      android:insetTop="50dp" 
      android:insetLeft="50dp" 
      android:insetBottom="50dp" /> 
    </item> 

Esto creará los acolchados a su alrededor menu_drawable2 por lo que ganó el `t ser escalado. Simplemente configure las dimensiones que necesita.

+0

Si usa múltiples insertos, sin embargo, parece acumularse.Muy perturbador de hecho. – JohnyTex

+1

nota, no funciona con el vector – djdance

3

Puede utilizar androide: Ancho de y androide: altura parámetros con valores deseados.

A continuación se muestra la lista de capas dibujables y la captura de pantalla. Utilicé el vector dibujable de Google material icons y el propio selector dibujable.

original forma dibujable circle.xml tienen 100dp x 100dp tamaño, pero en drawable.xml I anular este valores a 24dp x 24dp por androide: Ancho de y androide: altura parámetros.

Espero que esta ayuda!

drawable.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/circle" android:height="24dp" android:width="24dp"/> 
    <item android:drawable="@drawable/ic_accessibility_black_24dp"/> 
    <item android:drawable="@drawable/ic_http_white_24dp" android:gravity="center" android:top="-3dp" android:height="5dp" android:width="5dp"/> 
</layer-list> 

circle.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:innerRadius="20dp" android:shape="oval"> 
      <solid android:color="#CCC" /> 
      <size android:width="100dp" android:height="100dp"/> 
     </shape> 
    </item> 
</selector> 

screen shot

+8

Descargo de responsabilidad: el ancho y la altura son API 23+ – OldSchool4664

-3

No sé sus trabajos o no pero que se trató de separarlos unos de otros?

algo como esto:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
</layer-list> 
<layer-list> 
    <item android:drawable="@drawable/menu_drawable2"/>  
</layer-list> 

o dicho de otra cosa Transcurrirá ellos como composición vacía con la altura y la anchura 0DP.

Cuestiones relacionadas