Android 5.0 - preferences 中的checkboxes 不可见

文章标签: android5.0
2014-11-21 10:02:29     人阅读    

我刚在AppCompat v21.基础上把我的设置升级到了 Android 5.0 Lollipop ,
其他的都运行正常,但是发现一个问题,checkboxes在 preferences 窗口中复选框checkboxes 看不到了
只有当选中整个行的时候才能看见checkbox,我可以保证升级过程非常顺利,preferences 功能都很正常.

除了这点checkbox不显示的小问题外,其他一切正常。我同样测试过android 2.3 的版本,一切正常,怀疑是android 5.0 版本问题,下面是2张图对比

checkbox默认不显示

当选中行的时候Checkbox 显示出来了...

选中后才显示


Preferences 和工程代码都是最基本的代码,没有任何的封装和自定义.

我的 xml 文件配置如下

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <CheckBoxPreference
        android:key="show_romaji"
        android:title="@string/preferences_romaji_title"
        android:summary="@string/preferences_romaji_explanation"
        android:defaultValue="true"
        android:persistent="true" />

    <CheckBoxPreference
        android:key="send_statistics"
        android:title="@string/preferences_statistics_title"
        android:summary="@string/preferences_statistics_explanation"
        android:defaultValue="true"
        android:persistent="true" />

</PreferenceScreen>

Preferences activity:
public class PreferenceActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SharedPreferenceFragment())
                .commit();
    }

}
Preferences fragment:
public class SharedPreferenceFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preferences);
    }

}

 

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.JlptVocabulary" parent="Theme.AppCompat">

        <!-- Set AppCompat’s color theming attrs -->
        <item name="colorPrimary">#ffe91e63</item>
        <item name="colorPrimaryDark">@color/black</item>

        <!-- The rest of your attributes -->
        <item name="android:windowBackground">@color/backgroundBlack</item>
    </style>
</resources>
搜索了一下,找不到相似的问题,所以过来求助..
I'm stuck with this problem and haven't been able to find a solution after doing some research and experiments. Anyone has a clue?

处理方法

preferences 中Theme.AppCompat 样式的checkboxes  默认是黑色的,所以你才看不到...
你可以设置一下黑色的背景,只要让他们的颜色不一致就行了。我的建议是使用分离样式(Theme.Pref_JlptVocabulary),这样checkboxes就能正常显示了

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Pref_JlptVocabulary" parent="Theme.AppCompat">

    </style>
</resources>



原文地址:http://www.itmmd.com/201411/201.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android 在当前程序中启动新的activity的时候报错   上一篇
下一篇  andorid在 Fragment中调用摄像机
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!