3

stackoverflow を検索して、次の関連トピックを見つけます。

  1. Android Switch のスタイルを設定するにはどうすればよいですか?
  2. Android 4 のカスタム スイッチ ウィジェット
  3. switchStyle を設定 - エラー リソースが見つからない - なぜですか?

Google グループのバグレポートも見つけました: Issue 36636: Unable to override style switchStyle そして最後に Switch ウィジェットで新しい問題を見つけました:

  • Preference.SwitchPreferenceを自作して Switch ウィジェットでレイアウトを定義してみた

    android:id="@+android:id/switchWidget"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/switch_thumb"
    android:layout_gravity="center"
    android:padding="16dip"
    android:focusable="false" />
    

しかし、コンパイル エラーが発生します: エラー: リソースは公開されていません。(値「@+android:id/switchWidget 」の「id 」)。なので、このままでは使えません。

  • 2 番目の方法は、Switch クラスをコードからセット リソースを追加して拡張しようとしました。しかし、setThumbResourceメソッドは API 16 からのみ利用できることがわかりました。しかし、@+android:id/switchWidgetは公開されていないため、まだ適用できません。

では、SDK API 15 のカスタム スイッチ設定を取得するにはどうすればよいですか ??? または、設定でスイッチをカスタマイズするにはどうすればよいですか?

4

5 に答える 5

1

スイッチの問題についてはよくわかりませんが、ToggleButton次のように a を使用できます。

レイアウトでボタンを定義します。

<ToggleButton
            android:id="@+id/your_awesome_toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:gravity="center_vertical|center_horizontal"
            android:layout_marginRight="15dp"
            android:textOn=""
            android:textOff=""
            android:background="@drawable/toggle_button"
        />

セレクターを作成します。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_checked="false" 
        android:state_focused="false"
        android:drawable="@drawable/switch_off_btn" />
    <item 
        android:state_checked="true" 
        android:state_focused="false" 
        android:drawable="@drawable/switch_on_btn" />
    <item 
        android:drawable="@drawable/switch_off_btn" />
</selector>

OnClickListener:

    toggleOnOff = (ToggleButton) findViewById(R.id.your_awesome_toggle);

    toggleOnOff.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            updateButtons();
            if(toggleOnOff.isChecked()){
                 SharedPreferences emailPrefs = getSharedPreferences(rememberToggleOnOff,MODE_PRIVATE);
                 SharedPreferences.Editor editor = yourPrefs.edit();
                 editor.putBoolean("mon", true);
                 editor.commit();
            }
            else {
                SharedPreferences emailPrefs = getSharedPreferences(rememberToggleOnOff,MODE_PRIVATE);
                SharedPreferences.Editor editor = yourPrefs.edit();
                editor.putBoolean("mon", false);
                editor.commit();
            }
        }
    });
    checkToggleState();

checkToggleState方法:

/**
     * Checks the state of the Toggle button preferences.  
     * If preferences are true set the toggle to on, if false set the toggle off.  
     * 
     */
    private void checkToggleState() {
        SharedPreferences yourPrefs = getSharedPreferences(rememberToggleOnOff,MODE_PRIVATE);
        boolean mON = yourPrefs.getBoolean("mon", true);
        if(mON) {
            toggleOnOff.setChecked(true);
        }
        else {
            toggleOnOff.setChecked(false);
        }
    }
于 2013-06-23T18:59:42.590 に答える
0

変化する:

android:id="@+android:id/switchWidget"

に:

android:id="@+id/switchWidget"

簡単なスイッチの例は、ここにあります。

Switch ウィジェットは API レベル 14 以降のみをサポートしますが、API レベル 14 より前の Switch Preference を使用する場合は、これを確認してください。

更新: 独自のスイッチのスタイルを設定する場合は、これを試してください

于 2013-06-19T23:31:13.687 に答える
0

SwitchPreference クラスを継承し、カスタム レイアウトを指すレイアウトを指定して、preferences.xml で使用します。次に、継承された SwitchPreference クラスの onBind メソッドで、対応するビューを ID で見つけ、リスナーを設定できます。onBind() で super を呼び出すことを忘れないでください。

于 2013-09-19T05:02:00.890 に答える
-3

変化する:

android:id="@+android:id/switchWidget"

に:

android:id="@*android:id/switchWidget"
于 2014-09-02T06:21:35.790 に答える