4

我正在使用 Android SharedPreferences API 来构建设置屏幕。

我有一个设置,我需要一个长文本来向用户解释它的含义(我想要主标题和较小的副标题,但我认为它需要大量定制)settings.xml 就像:

<EditTextPreference

    android:defaultValue="15"
    android:inputType="number"

    android:icon="@drawable/ic_timer"
    android:key="@string/pref_comment_interval"
    android:persistent="true"
    android:lines="2"
    android:title="@string/time_between_comments" />

但即使在文本处设置lines=2和换行也会被换行。\ntime_between_comments

<string name="time_between_comments">Time between comments (in seconds)\nLower is faster</string>

喜欢:
在此处输入图像描述

我怎样才能使文本换行?

4

2 回答 2

0

这不适用于所有 Preference 类型,但适用于 EditTextPreference。

在标题的第一行周围添加 <![CDATA[ \n]]> ,如下例所示:

    <string name="pref_title_special_with_note"><![CDATA[Special Title\n]]><small><i> ** followed by second line note</i></small></string>

这将以较小的文本大小和斜体显示第二行,但这只是装饰。

于 2021-12-30T00:02:38.267 回答
0

默认情况下,标题EditTextPreferencesingleLine="true" 所以我们应该自定义它如下

public class MultiLineTitleEditTextPreference extends EditTextPreference {
    public MultiLineTitleEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public MultiLineTitleEditTextPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MultiLineTitleEditTextPreference(Context context) {
        super(context);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);

        TextView textView = (TextView) view.findViewById(your_package.R.id.title);
        if (textView != null) {
            textView.setSingleLine(false);
        }
    }
}
于 2018-07-19T03:53:51.077 回答