创建一个完全为空的Drawable似乎是一个常见的需求,作为一个占位符,初始状态等,但似乎没有一个好的方法来做到这一点......至少在XML中。有几个地方引用系统资源@android:drawable/empty
,但据我所知(即,它不在参考文档中,并且aapt chokes说它无法找到资源)这不存在。
是否存在引用空Drawable的一般方法,或者您是否最终为每个项目创建假空PNG?
答案 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)
@null
与在Java中使用null
作为Drawable
具有相同的效果。
答案 5 :(得分:3)
使用@android:color/transparent
,不要忘记在android:constantSize="true"
上添加<selector>
答案 6 :(得分:2)
答案 7 :(得分:0)
要创建空白的Drawable
图像,可以使用具有透明颜色的ShapeDrawable
:
val shapeDrawable = ShapeDrawable(OvalShape())
shapeDrawable.paint.color = context.getColor(android.R.color.transparent)
如果图像大小很重要,请使用:
shapeDrawable.intrinsicWidth = 100
shapeDrawable.intrinsicHeight = 100