如何使导航抽屉中的开关具有功能?

时间:2019-05-28 11:29:54

标签: java android android-theme

我正在尝试制作一个导航抽屉开关,以在应用程序的正常主题和黑暗主题之间切换,但是我无法使该开关起作用。

我已经可以正常使用mainactivity了,但是我无法在导航抽屉中使用它。

这是在亮/暗模式之间切换的代码。

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        if(AppCompatDelegate.getDefaultNightMode()==AppCompatDelegate.MODE_NIGHT_YES) {
            setTheme(R.style.HROTheme);
        }
        else setTheme(R.style.AppTheme);


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        modeswitch=(Switch)findViewById(R.id.switch2);
        if (AppCompatDelegate.getDefaultNightMode()==AppCompatDelegate.MODE_NIGHT_YES) {
            modeswitch.setChecked(true);
        }
        modeswitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                    recreate();
                }
                else {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                    recreate();
                }
            }
        });

1 个答案:

答案 0 :(得分:0)

您可以尝试在值/属性中添加一个项目,例如:<attr name="bottomback" format="color" />

然后为您的深色和浅色样式定义样式“ bottomback”:

<item name="bottomback">#000</item>

两种样式都必须不同。  现在您可以将抽屉的backgroundTint设置为:android:backgroundTint="?attr/bottomback"