1

セグメント化されたコントロールとして使用されているいくつかのImageButtonがあり、それぞれに背景が設定されています。前景の画像は、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" />

コードでは、1つがクリックされたときに、クリックされなかった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.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); を変更することを忘れないでください。ImageButtonlightModeButton

于 2013-01-03T14:20:50.847 に答える