1

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

            <ImageButton
                android:id="@+id/style_light_button"
                android:layout_width="@dimen/style_color_segment_width"
                android:layout_height="@dimen/style_button_segment_height"
                android:background="@drawable/button_segmented_light"
                android:src="@drawable/icons_checkmark_dark" />

            <ImageButton
                android:id="@+id/style_sepia_button"
                android:layout_width="@dimen/style_color_segment_width"
                android:layout_height="@dimen/style_button_segment_height"
                android:background="@drawable/button_segmented_sepia"
                android:src="@drawable/icons_checkmark_dark" />

            <ImageButton
                android:id="@+id/style_dark_button"
                android:layout_width="@dimen/style_color_segment_width"
                android:layout_height="@dimen/style_button_segment_height"
                android:background="@drawable/button_segmented_dark"
                android:src="@drawable/icons_checkmark_light" />

在代码中单击一个时,我将清除未单击的 2 中的复选标记,并确保将其添加到单击的那个中。

ImageButton lightModeButton = (ImageButton)findViewById(R.id.style_light_button);
ImageButton sepiaModeButton = (ImageButton)findViewById(R.id.style_sepia_button);
ImageButton darkModeButton = (ImageButton)findViewById(R.id.style_dark_button);

我都试过了setImageBitmap(null)setImageDrawable(null)但他们都崩溃了。

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

如何清除图像,或者在显示背景图像的同时隐藏前景图像?

4

2 回答 2

2

来自安卓文档

 public void setBackgroundResource (int resid)

将背景设置为给定资源。资源应引用 Drawable 对象或 0 以移除背景。

我不知道它是否可以使用,setImageResource(int resId)所以试试这个:

sepiaModeButton.setImageResource(0);

代替

sepiaModeButton.setImageDrawable(null);
于 2013-01-03T14:21:01.253 回答
1

例如,您可以创建一个 Transclude drawable,在您的 Drawable 目录上创建文件 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_drawable); 不要忘记ImageButton使用您的引用更改 ,例如lightModeButton

于 2013-01-03T14:20:50.847 回答