2010-02-10 19 views
37

Crear un Drawable que esté completamente vacío parece ser una necesidad común, como un marcador de posición, estado inicial, etc., pero no parece haber una buena manera de hacerlo ... al menos en XML. Varios lugares se refieren al recurso de sistema @android:drawable/empty pero, por lo que puedo decir (es decir, no está en los documentos de referencia, y ahoga chokes diciendo que no puede encontrar el recurso), esto no existe.Crear un Drawable vacío en Android

¿Hay una manera general de hacer referencia a un Drawable vacío, o termina creando un PNG vacío falso para cada proyecto?

Respuesta

84

Para mí no funcionó cuando traté de usar @android:id/empty al hacer un drawable vacío. Para mí, fue el @android:color/transparent.

2

Kai, no sé por qué este es el caso, pero he tenido el mismo problema. ¿Creo que podría estar relacionado con la versión de Android para la que estás compilando? En cualquier caso, descubrí que simplemente usando @android: id/empty donde usaría @android: dibujable/vacío hace el truco.

3

Para mí, usar @android: dibujable/vacío mostraría un error y evitaría la compilación. Utilizando @android: id/empty corrigió el error y me permitió compilar, pero mostró "NullPointerException: null" en el editor de Eclipse Layout. Lo cambié a @android: color/transparent y ahora todo está bien.

No puedo votar aún o hubiera contestado la respuesta de Emil.

9

uso un vacío ShapeDrawable, es decir, crear mi propia estirable/empty.xml que contiene solo <shape/>

3

@null en XML tiene el mismo efecto que el uso de un null como Drawable en Java.

+0

me gustaría que esto iba a funcionar, pero si lo uso en XML estirable y que está establecido como fondo en un diseño XML, obtengo el error " etiqueta requiere un atributo 'dibujable' o etiqueta secundaria que define un dibujable" – user3175580

3
<shape /> 

crea una forma vacía y hace el truco para mí. O cree un archivo empty_drawable.xml que contenga:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" /> 

para que pueda usarlo en cualquier otro lugar.

También puede hacer una forma de desaparecer cuando la vista se utiliza en no está habilitada mediante la creación de my_disablable_view.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="true"> 
     <shape android:shape="oval"> 
      <size android:height="10dp" android:width="10dp" /> 
      <solid android:color="@android:color/white" /> 
     </shape> 
    </item> 
    <item android:state_enabled="false"> 
     <shape /> 
    </item> 
</selector> 
Cuestiones relacionadas