2012-08-09 134 views
14

我想做一个偏好屏幕,只是有一个关于,联系和合法的选项,所有这些当单击只显示文本blurb和图标在一个单独的页面,没有shared preferences或任何东西。偏好屏幕显示文本块

我无法理解层次结构以显示文本。我想要的流程如下:settings -> about -> the about text

目前我有这个,它给了我的类别和选项,但我不知道该怎么做才能显示新文本。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory 
      android:title="Info"> 
     <Preference android:title="About"/> 


    </PreferenceCategory> 
... 
</PreferenceScreen> 

我不知道用什么选项来使可点击进入textview。

回答

8

您不能在PreferenceScreen中添加格式化文本块,这不是它的意思。但是,您可以在另一个活动中添加“关于”文本(具有某种格式的TextViewLinearLayout可能已足够)。通过传递意图偏好内部调用此:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >  
    <Preference 
     android:key="about" 
     android:title="About">   
      <intent android:action="your.package.path.to.Activity"/>   
    </Preference> 
</PreferenceScreen> 
+0

你能更多这方面的拓展?我是否必须打电话给活动目的才能显示文本块? – Nick 2012-08-09 13:33:12

+0

好吧,文本块本身并不意味着处于首选页面。除非您为此添加摘要(其中只显示未格式化的文本),否则您唯一的选择是打开新的活动或仅将关于页面定义为另一件事,而不是首选页面 – Korcholis 2012-08-09 13:34:33

+0

好的,我明白您的意思。我可以做到这一点,所以我点击时的偏好将把它带到另一个首选项,我在其中使用标题和摘要以单一意图显示文本?基本上使另一个XML首选项文件在点击主要首选项屏幕的“关于”时显示? – Nick 2012-08-09 13:40:29

22

我有同样的问题,并且需要显示的静态文本块。虽然在我的情况下,它排在喜好页面。

该标签确实允许链接,但这并不能解决对静态文本的需求。但是,首选标签本身就是。您可以让它显示文本,通常的标题行以及下面的文本摘要,两者都是可选的,然后使其不可选。它会给出一个静态文本的幻觉。

<Preference 
    android:key="pref_static_field_key" 
    android:selectable="false" 
    android:title="you can omit the title" 
    android:summary="Multi line description\ncan go here."/> 
+0

注意:Preference标签还有一个名为android:fragment的属性,它似乎链接到首选项片段。这与上述结合起来似乎是你关于盒子所需要的。 – 2013-08-22 13:24:09

25

A.Grandt的解决方案为优先活动中的文本块的真的很好模仿,但我想补充一个android:persistent="false"属性,从而避免了不必要的存储这个“伪偏好”为SharedPreferences文件为您的应用程序的设置。

总结。首活动作为A.Grandt内的TextView的仿建议是:

<Preference 
    android:key="pref_static_field_key" 
    android:selectable="false" 
    android:persistent="false" 
    android:title="you can omit the title" 
    android:summary="Multi line description\ncan go here."/> 

虽然可以使用\n为断行,但它不会调整首选项本身,所以有可能的是,这些多线会在仍为单行的首选项内不能完全显示。

+0

使用这种方法,是否有任何方法在代码*中设置文本块值(摘要)*? (使用案例:在首选项屏幕顶部显示应用程序版本名称。) – Jonik 2017-04-12 13:12:04

+0

[结果非常简单](http://stackoverflow.com/a/43371960/56285);在代码中,查找首选项并为其设置摘要。 – Jonik 2017-04-12 14:09:48

3

我想添加文本块,但以编程方式设置实际文本内容。我的具体需求:在首选项屏幕顶部显示应用程序版本名称。

我按照A.GrandtKrzysiek的方法完成,并在代码中设置摘要。

dev_preferences.xml

<Preference 
    android:key="pref_app_version" 
    android:persistent="false" 
    android:selectable="false" 
    android:title="@string/app_name" /> 

偏好片段(extends PreferenceFragment):

private static final String KEY_APP_VERSION = "pref_app_version"; 

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

     addPreferencesFromResource(R.xml.dev_preferences); 

     findPreference(KEY_APP_VERSION).setSummary(BuildConfig.VERSION_NAME); 
    } 

我也结束了由<Preference>入口设置android:layout="@layout/dev_preferences_header"使用自定义布局(as in this answer)。(不是强制性的,但这样一来,你可以轻松地定制偏好“头”的样子。)

dev_preferences_header.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"  
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:padding="@dimen/spacing_small"> 

    <TextView 
     android:id="@android:id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@android:id/summary" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@android:id/title" /> 

</RelativeLayout>