android 根据PreferenceScreen中另一个首选项的状态(启用/禁用)隐藏首选项项

mf98qq94  于 2022-11-27  发布在  Android
关注(0)|答案(1)|浏览(159)

我正在创建一个设置屏幕,其中有几个设置项:SwitchPreferenceCompat和我的CustomPreference
我需要СustomPreference在SwitchPreferenceCompat关闭**时消失(隐藏),在SwitchPreferenceCompat打开时出现(显示)。
开箱即用,通过为某些Preferences指定“dependency”属性,只有“dependency”机制可用,这只禁用/启用项目,我需要更改可见性。
有没有办法做到这一点?

6yt4nkrj

6yt4nkrj1#

创建customPreference并覆盖onDependencyChanged()。

package com.paul.ttcapp.p9988030.helper.ui;

import android.content.Context;
import android.util.AttributeSet;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.EditTextPreference;
import androidx.preference.Preference;

public class PaulEditTextPreference extends EditTextPreference {
    public PaulEditTextPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    public PaulEditTextPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public PaulEditTextPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public PaulEditTextPreference(@NonNull Context context) {
        super(context);
    }

    @Override
    public void onDependencyChanged(@NonNull Preference dependency, boolean disableDependent) {
        // If the corresponding dependency is disabled, disable (hide) this setting as well.
        setVisible(!disableDependent);
        super.onDependencyChanged(dependency, disableDependent);
    }
}

相关问题