日/夜主题未在android

时间:2017-10-07 10:20:58

标签: android layout themes android-appcompat android-theme

我在我的应用程序中实现了 android日/夜主题,原因有些。

1)我无法更改我的文字颜色,并且为了使其正常工作我必须点击切换按钮然后返回主屏幕,表示在设置页面中显示,并且必须刷新才能转到主页

2)我面临的第二个问题是,当应用日/夜主题时,我的 recyclerView 帖子将返回到列表中的第一,并且不会仅仅应用它在哪里。

请帮助!!。

我正在使用Android studio

日/夜主题类文件:

public class settings extends AppCompatActivity {

    private ToggleButton DayNightt;
    private static Bundle bundle = new Bundle();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_page);
        DayNightt = (ToggleButton) findViewById(R.id.dayNight_Switch);
        DayNightt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
                if (isChecked){
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

                }else{
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);


                }
            }
        });
}
    @Override
    public void onPause() {
        super.onPause();
        bundle.putBoolean("ToggleButtonState", DayNightt.isChecked());
    }
    @Override
    public void onResume() {
        super.onResume();
        DayNightt.setChecked(bundle.getBoolean("ToggleButtonState",false));

    }
}

color-night xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimaryNight">#222222</color>
    <color name="colorPrimaryDarkNight">#222222</color>
    <color name="colorAccentNight">#FF4081</color>
    <color name="textColorPrimaryNight">#FFFFFF</color>
    <color name="colorBackgroundNight">#000000</color>
</resources>

style-night xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimaryNight</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDarkNight</item>
    <item name="colorAccent">@color/colorAccentNight</item>
    <item name="android:windowBackground">@color/colorBackgroundNight</item>
        <item name="android:textColorPrimary">@color/textColorPrimaryNight</item>

    </style>
    </resources>

样式xml:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/textColorPrimary</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

color xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#824c83dd</color>
    <color name="textColorPrimary">#000000</color>
    <color name="colorPrimaryDark">#303f9f</color>
    <color name="colorAccent">#FF4081</color>
    <color name="SourceColor">#00bdbdbd</color>
    <color name="background">#FFFFFF</color>
</resources>

2 个答案:

答案 0 :(得分:1)

我通过添加以下代码成功实现了色彩校正部分:

颜色xml文件:

<color name="TextP">#000000</color>

color-night xml文件:

<color name="TextP">#FFFFFF</color>

然后在colors.xml

中为我的文本指定与上面相同的颜色

但其他部分对我来说仍然是一个问题,所以如果有人可以提供帮助,请。

答案 1 :(得分:0)

如何在color-night.xml中添加您在普通color.xml中使用的字符串? <color name="textColorPrimary">#000000</color>