Изменить фон SwitchPreferenceCompat - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь создать экран настроек, используя androidx.preference.PreferenceScreen .

<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">

<SwitchPreferenceCompat
    app:key="enable"
    app:title="@string/sync_title"/>

<SwitchPreferenceCompat
    app:key="missed"
    app:summary="Remove missed calls and block unwanted ones"
    app:dependency="enable"
    app:title="Missed call alert" />

<SwitchPreferenceCompat
    app:key="blocked"
    app:dependency="enable"
    app:summary="Receive a silent notification when you receive an unwanted call"
    app:title="Be informed of blocked calls " />


<PreferenceCategory
    app:key="premium_cat"
    app:dependency="enable"
    app:title="Premium">


    <SwitchPreferenceCompat
        app:key="premium"
        app:dependency="enable"
        app:summary="Automatically identify spam calls"
        app:title="Real time call alert" />

</PreferenceCategory>

у меня проблема в том, что я хочу добавить другой цвет фона для первых настроек

<SwitchPreferenceCompat
app:key="enable"
app:title="@string/sync_title"/>

Я попытался добавить макет, но он не работает, все, что он делает, это скрывает SwitchPreferenceCompat

1 Ответ

2 голосов
/ 23 июня 2019

Вы можете сделать это так

Создать новый класс Java, расширенный с SwitchPreferenceCompat

public class MySwitchPreference extends SwitchPreference {

    public MySwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) 
    {
        super(context, attrs, defStyleAttr);
    }

    public MySwitchPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MySwitchPreference(Context context) {
        super(context);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        view.setBackgroundResource(R.color.your_color); // put here the color defined in colors.xml
    }
}

Затем используйте это так

<com.your_package.your_name.MySwitchPreferenceCompat
    app:key="enable"
    app:title="@string/sync_title"/>
...