我使用PreferenceFragment并在PreferenceFragment的oncreate方法中从xml加载首选项:

     @Override
     public void onCreate(Bundle savedInstanceState)
     {
      ...
      addPreferencesFromResource(R.xml.preferences_base);
      PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences_base, false);
      ...
     }

这是preference_base.xml的摘录:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
        <CheckBoxPreference
            android:key="boolStartSettings"
            android:title="@string/prefBoolStartSettings"
            android:summary="@string/prefBoolStartSettingsSummary"
            android:defaultValue="false"/>

...

</PreferenceScreen>

在模拟器和我的galaxy s4上,这工作得很好。今天我在GalaxyTab上测试了这个应用程序,现在首选项没有正确显示:
这是我的Galaxy S4的截图:
这是Galaxytab的截图
如您所见,在首选项视图中的横向模式中有一个奇怪的帧或边框。
知道为什么会这样吗?怎么解决?
编辑:
我已经在我的首选项中实现了一个首选项子屏幕,它正确地显示了:
如果我按向上键进入我的主首选项页面,奇怪的边框/边框仍然存在。
恐怕这没有多大帮助,但这里是我的首选项XML的一个摘录,其中包含子屏幕:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
<!-- not shown correctly -->
...
    <PreferenceCategory
            android:title="@string/prefKatEffectsAndAnimations">
            <PreferenceScreen
                android:key="@string/keyPrefDetails"
                android:title="@string/prefCmdDetailSettings"
                android:persistent="true">
                    <!-- shown correctly -->
                    ...
            </PreferenceScreen>
    </PreferenceCategory>
...
</PreferenceScreen>

最佳答案

确保您的活动扩展了活动,而不是首选活动。
我在这里使用adviseWhat to use instead of "addPreferencesFromResource" in a PreferenceActivity?

07-24 09:47
查看更多