在Android中创建一个空的Drawable

时间:2010-02-10 03:53:24

标签: android

创建一个完全为空的Drawable似乎是一个常见的需求,作为一个占位符,初始状态等,但似乎没有一个好的方法来做到这一点......至少在XML中。有几个地方引用系统资源@android:drawable/empty,但据我所知(即,它不在参考文档中,并且aapt chokes说它无法找到资源)这不存在。

是否存在引用空Drawable的一般方法,或者您是否最终为每个项目创建假空PNG?

8 个答案:

答案 0 :(得分:97)

对我来说,当我在制作一个空的drawable时尝试使用@android:id/empty时,它不起作用。对我来说,@android:color/transparent就是那个。

答案 1 :(得分:9)

我使用空ShapeDrawable,即创建我自己的drawable / empty.xml,只包含<shape/>

答案 2 :(得分:5)

<shape />

创建一个空的形状,并为我做的伎俩。或者创建一个包含以下内容的文件empty_drawable.xml:

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

所以你可以在其他地方使用它。

如果通过创建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> 

答案 3 :(得分:4)

对我来说,使用@android:drawable / empty会显示错误并阻止编译。使用@android:id / empty修复错误并让我编译,但在Eclipse Layout编辑器中显示“NullPointerException:null”。我把它改成了@android:颜色/透明,现在一切都很好。

我还不能投票,否则我会提起埃米尔的答案。

答案 4 :(得分:3)

XML中的

@null与在Java中使用null作为Drawable具有相同的效果。

答案 5 :(得分:3)

使用@android:color/transparent,不要忘记在android:constantSize="true"上添加<selector>

答案 6 :(得分:2)

凯,我不知道为什么会这样,但我遇到了同样的问题。我认为它可能与您正在编译的Android版本有关?在任何情况下,我发现只使用@android:id / empty,你可以使用@android:drawable / empty来实现这一点。

答案 7 :(得分:0)

要创建空白的Drawable图像,可以使用具有透明颜色的ShapeDrawable

val shapeDrawable = ShapeDrawable(OvalShape())
shapeDrawable.paint.color = context.getColor(android.R.color.transparent)

如果图像大小很重要,请使用:

shapeDrawable.intrinsicWidth = 100
shapeDrawable.intrinsicHeight = 100