在Android中创建一个空的可绘制文件

在Android中创建一个空的可绘制文件,android,Android,作为占位符、初始状态等,创建一个完全为空的绘图表似乎是一种常见的需要,但似乎没有一种好的方法来做到这一点。。。至少在XML中是这样。有几个地方提到了系统资源@android:drawable/empty,但据我所知(即,它不在参考文档中,aapt Choke说它找不到资源),它不存在 有没有一种引用空绘图表的通用方法,或者你最终会为每个项目创建一个假的空PNG?Kai,我不知道为什么会这样,但我也遇到了同样的问题。我想这可能与你编译的Android版本有关?在任何情况下,我发现只要在使用@and

作为占位符、初始状态等,创建一个完全为空的绘图表似乎是一种常见的需要,但似乎没有一种好的方法来做到这一点。。。至少在XML中是这样。有几个地方提到了系统资源
@android:drawable/empty
,但据我所知(即,它不在参考文档中,aapt Choke说它找不到资源),它不存在


有没有一种引用空绘图表的通用方法,或者你最终会为每个项目创建一个假的空PNG?

Kai,我不知道为什么会这样,但我也遇到了同样的问题。我想这可能与你编译的Android版本有关?在任何情况下,我发现只要在使用@android:id/empty的地方使用@android:drawable/empty就可以了。

对于我来说,在制作空的drawable时尝试使用
@android:id/empty
是行不通的。对我来说,
@android:color/transparent
就是其中之一。

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


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

我使用一个空的
ShapeDrawable
,也就是说,创建我自己的drawable/empty.xml,其中只包含
,在xml中使用
null
与在Java中使用
drawable
具有相同的效果。


<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> 


使用
@android:color/transparent
,不要忘记在
上添加
android:constantSize=“true”
,要创建一个空的
可绘制图像,您可以使用透明颜色的
形状可绘制图像:

val shapeDrawable = ShapeDrawable(OvalShape())
shapeDrawable.paint.color = context.getColor(android.R.color.transparent)
如果图像大小很重要,请使用:

shapeDrawable.intrinsicWidth = 100
shapeDrawable.intrinsicHeight = 100

我希望这能起作用,但如果我在可绘制XML中使用它,并将其设置为布局XML中的背景,则会出现错误“标记需要“可绘制”属性或定义可绘制的子标记”