20

アバウト、連絡先、法的なオプションだけを備えた設定画面を作成しようとしています。これらすべてをクリックすると、テキストの宣伝文句とアイコンが別のページに表示されます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>

クリック可能をテキストビューにするためにどのオプションを使用すればよいかわかりません。

4

5 に答える 5

43

A.Grandtのソリューションは、Preference Activity内のテキストブロックの非常に優れた模倣を提供しますが、android:persistent="false"属性を追加します。これにより、この「疑似設定」がアプリの設定用のSharedPreferencesファイルに不必要に保存されるのを防ぎます。

総括する。A.Grandtが提案したPreferencesアクティビティ内の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、設定項目自体のサイズは変更されないため、これらの複数行がまだ1行の設定項目内に完全に表示されない可能性があります。

于 2014-10-30T17:49:27.070 に答える
25

同じ問題があり、静的テキストブロックを表示する必要がありました。私の場合、それは設定ページに並んでいましたが。

タグはリンクを許可しますが、静的テキストの必要性は解決されません。ただし、Preferenceタグ自体はそうです。テキスト、通常のタイトル行、およびその下のテキストの概要を表示することができます。どちらもオプションであり、選択不可にすることができます。静的なテキストのような錯覚を与えます。

<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."/>
于 2013-08-22T13:21:15.940 に答える
13

の中にフォーマットされたテキストブロックを追加することはできませんPreferenceScreen。それは意図されたものではありません。ただし、別のアクティビティ内にAboutテキストを追加することはできます(LinearLayoutフォーマットされたTextViewsを使用したaで十分な場合があります)。プリファレンス内にインテントを渡すことでこれを呼び出します。

<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>
于 2012-08-09T13:30:27.327 に答える
9

テキストブロックを追加したかったのですが、実際のテキストコンテンツをプログラムで設定しました。私の特定のニーズ:設定画面の上部にアプリのバージョン名を表示します。

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);
    }

また、エントリで設定することにより、カスタムレイアウト(この回答のように)を使用することになりました。(必須ではありませんが、この方法で、設定の「ヘッダー」の外観を簡単にカスタマイズできます。)android:layout="@layout/dev_preferences_header"<Preference>

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>
于 2017-04-12T14:08:41.890 に答える
1

[設定]ページに、アプリケーションデータの最終バックアップ日時を表示したいと思います。

(インスピレーション: https ://developer.android.com/reference/android/content/SharedPreferences.Editor )

1)私のpreference.xml:

<PreferenceCategory app:title="Backup last execution">
    <EditTextPreference
        app:key="backup"
        app:selectable="false"
        app:summary="never"
        app:useSimpleSummaryProvider="true" />
</PreferenceCategory>

2)私のクラスのユーティリティ{コンパニオンオブジェクト}:

fun Utility.Companion.storeToPreferences(key:String, value:String){
       val sharedPref: SharedPreferences =
           PreferenceManager.getDefaultSharedPreferences(context)
       val editor = sharedPref.edit()
       editor.putString(key, value)
       editor.apply()
}

3)私の電話:

 Utility.storeToPreferences("backup", LAST_BACKUP)
于 2020-04-01T17:00:12.407 に答える