Android 如何设置ImageButton';它的前景图像为空

Android 如何设置ImageButton';它的前景图像为空,android,android-layout,Android,Android Layout,我有一些图像按钮被用作分段控件,每个按钮都有一个背景集,前面的图像将是一个复选标记,显示当前选择了3个按钮中的哪一个。其他2个按钮应无圆形图像。这些图像是用XML定义的(见下文) 我尝试了setImageBitmap(null)和setImageDrawable(null),但它们都崩溃了 lightModeButton.setImageBitmap(null); sepiaModeButton.setImageDrawable(null); darkModeButton.setImageRes

我有一些图像按钮被用作分段控件,每个按钮都有一个背景集,前面的图像将是一个复选标记,显示当前选择了3个按钮中的哪一个。其他2个按钮应无圆形图像。这些图像是用XML定义的(见下文)

我尝试了
setImageBitmap(null)
setImageDrawable(null)
,但它们都崩溃了

lightModeButton.setImageBitmap(null);
sepiaModeButton.setImageDrawable(null);
darkModeButton.setImageResource(R.drawable.icons_checkmark_light);

如何清除图像,或者在不显示背景图像的情况下隐藏前景图像?

您可以创建一个转置可绘制文件,例如,在可绘制目录上创建文件 transclude_drawable.xml如下所示:

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

    <item android:drawable="@android:color/transparent" />
</selector>

之后只需设置
ImageButton.setImageResource(R.drawable.transclude\u drawable)
不要忘记使用您的参考更改
ImageButton
,例如
lightModeButton

将背景设置为给定的资源。资源应引用可绘制对象或0以删除背景。

我不知道它是否能与
setImageResource(intresid)
一起使用,请尝试一下:

sepiaModeButton.setImageResource(0);
而不是

sepiaModeButton.setImageDrawable(null);

只需设置imgButton.setImageResource(0);好的,我试过了,但是仍然得到了空指针崩溃,所以我想我的问题是按钮由于某种原因是空的。谢谢。@jamone-可能吧。setImageDrawable(空);应与setImageResource(0)一起正常工作;谢谢,这将在应用程序的另一部分中有所帮助。虽然
sepidModeButton.setImageResource(0)
确实有效,但无法预测。有时在它被调用后,复选标记仍然显示,而其他时候它消失了。我最终创建了一个透明的绘图板。我想是因为你是否也应该删除背景?
 public void setBackgroundResource (int resid)
sepiaModeButton.setImageResource(0);
sepiaModeButton.setImageDrawable(null);