0

私はいくつかのCheckBoxPreferencesを持っており、以下とここに示すようにxmlを介してそれらのアイコンを変更しても問題ありませんが、ユーザーはチェックボックスのアクションを直接クリックする以外の方法でトリガーするため(つまり、おそらく別のアクティビティまたは別のアプリケーション)アクションとともに発生する値の変更に応じて、プログラムでアイコンを設定できるようにする必要があります。たとえば、Bluetooth がオンの場合はアイコンを 1 つの画像にし、Bluetooth がオフの場合は別の画像にしたいと考えています。この画像をプログラムで変更することはできますか?

<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/check_box_icon"
android:clickable="true"
android:focusable="false"
android:/>
4

1 に答える 1

1

解決策を見つけました:

質問で提供したリンクにあるメソッドを使用してセレクターを設定し、チェックボックスの現在の状態に基づいて、さまざまな画像のすべての CheckBoxPreferences でそれを使用できるようにしました:-

<?xml version="1.0" encoding="utf-8"?>
//This is the xml selector "@drawable/checkbox"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="false"
  android:drawable="@drawable/checkbox_off_background" />
 <item android:state_checked="true"
  android:drawable="@drawable/checkbox_on_background" />
</selector> 

それに応じて、CheckBoxPreference コードも変更されます。

<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:text="new checkbox"
android:button="@drawable/checkbox"
android:clickable="true"
android:focusable="false" />

これで、 Checkbox.setChecked()を呼び出して有効かどうかを確認し、true または false に設定して値に応じて変更することができます。そのため、xml プロパティに従って、アイコンも自動的に変更されます。

于 2012-06-14T19:44:44.487 に答える