【问题标题】:How to display a listpreference as a regular activity?如何将列表首选项显示为常规活动?
【发布时间】:2013-05-06 17:53:23
【问题描述】:

我的活动设置中有一个 lispreference,它以类似于对话框视图的默认样式显示。

相反,我希望它像活动中的常规列表视图一样显示:(如这张图片:http://cdn4.staztic.com/cdn/screenshot/meteogram-weather-847838-0.jpg

我正在考虑两种方法来实现这一点:

  1. 扩展 Preference 并调用扩展 Preference 的 setIntent() 方法,然后启动包含列表视图的 Activity 并将所选选项存储在 SharedPrefs 中。

  2. 自定义 ListPreference 的外观并使其看起来像常规活动,但我没有找到如何做到这一点

对此的任何想法将不胜感激

--

【问题讨论】:

    标签: android android-preferences


    【解决方案1】:

    我为此遇到了很多麻烦,最后我放弃了。通过用我自己的主题扩展 holo.light 主题,我可以更改它(例如,复选框标记为橙色),但我无法获得更改颜色的列表首选项。您可以在此 Themes.xml 中找到它应该如何完成

    themes.xml

    【讨论】:

    • 你能告诉我你覆盖了哪些项目吗?以及我必须覆盖哪些 - 我找不到与 listpreference 相关的任何一个
    【解决方案2】:

    最后我使用了以下 XML (R.xml.prefs_location):

    <?xml version="1.0" encoding="utf-8"?> 
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
        <Preference
            android:key="someKey"
            android:summary="Some text"
            android:title="Location" 
            />        
    </PreferenceScreen>
    

    在 PreferenceFragment 类中,我设置了在单击首选项时打开所需活动的意图:

    Public class FragLocationPref extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.prefs_location);
            Intent i = new Intent(this.getActivity().getBaseContext(), LocationChooseActivity.class);
            findPreference("someKey").setIntent(i);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多