PreferenceActivity在Android 2.1上正常工作,但不适用于4.1(填充)

Mga*_*erz 5 android padding windowed preference preferenceactivity

我正在写一个应用程序.它需要在旧的Android操作系统上运行才有用.我使用PreferencesActivity编写了首选项屏幕,该PreferencesActivity填充了包含PreferenceScreen的options.xml文件.它没有偏好子菜单(因此PreferenceFragment没有提供真正的好处).

在Android 2.1(2.2和2.3,尚未在ICS上测试过)中,屏幕在横向上显示如下: 闪电

但是在Jellybean上,它看起来像这样: 果冻豆

看起来很糟糕.我没有定义任何布局,只是标准的addPreferencesFromResource().有谁知道这可能是什么原因?还是解决方案?

我的onCreate看起来像这样:

    protected void onCreate(Bundle savedInstanceState) { //
    super.onCreate(savedInstanceState);
    Log.i(TAG, "Options Activity Loaded.");
    setTitle(getString(R.string.optionsTitle));
    addPreferencesFromResource(R.xml.options);
    setupListeners();
}
Run Code Online (Sandbox Code Playgroud)

其他所有内容只会生成Preference对象,并指定方法在单击时执行操作.我不想为PreferenceFragment和PreferenceActivity创建代码.我不明白,如果最大版本的市场份额没有该API,谷歌希望我们使用Fragment API,他们不会将它添加到兼容性库中.

Coc*_*ess 1

您的应用程序可以支持 SharedPreferences 的旧功能和新功能。您可以为旧首选项提供一个类,也可以为新首选项提供一个类。它没有更多的代码。您可以使您的应用程序向后兼容,如下所示:

Class spc = Build.VERSION_SDK_INT < Build.VERSION_CODES.HONEYCOMB ? 
    oldPreferenceActivity.class : newFragmentPreferenceActivity.class;

Intent i = new Intent (this, spc);
startActivityForResult (i, SHOW_PREFERENCES); 
Run Code Online (Sandbox Code Playgroud)