【问题标题】:EditTextPreference single lineEditTextPreference 单行
【发布时间】:2013-03-12 19:41:55
【问题描述】:

有没有做一个 EditTextPreference 单行?我认为默认情况下没有属性可以做到这一点。有必要重写对象吗?有人做过吗?

【问题讨论】:

  • 请注意:即使输入字段是单行,如果您的数据中不允许使用换行符,您仍然需要检查文本中的换行符。原因是,从其他地方复制然后粘贴到单行编辑字段中的多行文本将显示为一行,但仍将包含换行符。

标签: android android-preferences edittextpreference


【解决方案1】:

也许android:singleLine="true" 在布局中:

restrict edittext to single line

【讨论】:

  • 不知道为什么这个答案和来自 CommonsWare 的答案被否决了。这对我来说非常有效(2.3.3)。请参阅the docs 中的类概述。
  • 因为它在最新版本的Android中不起作用。
【解决方案2】:

以下代码现在适用于androidx.preferences >= 1.1.0-alpha01

        EditTextPreference author_name_pref = findPreference(getString(R.string.author_name_key));
        if (author_name_pref != null) {
            author_name_pref.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
                @Override
                public void onBindEditText(@NonNull EditText editText) {
                    editText.setSingleLine();
                }
            });
        }

【讨论】:

  • 这确实是androidx的正确答案。 Kotlin 风格看起来不那么凌乱:preferenceScreen.findPreference<EditTextPreference>("the_key")?.setOnBindEditTextListener { it.setSingleLine() }
  • 在 java 8 中也可以缩短:EditTextPreference pref = findPreference("the_key"); if (pref != null) { pref.setOnBindEditTextListener(TextView::setSingleLine);}
  • 并将此代码放入onBindPreferences override。
【解决方案3】:

您可以通过调用getEditText() 获取支持您的EditTextPreferenceEditText。然后用它做任何你喜欢的事情,比如普通的EditText

EditTextPreference pref=new EditTextPreference(context);
EditText editText=pref.getEditText();
editText.setSingleLine(true);

【讨论】:

    【解决方案4】:

    <EditTextPreference> 支持<EditText> 可用的属性,因此您应该能够使用android:inputMode 等来控制EditText 小部件的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2011-11-20
      • 1970-01-01
      相关资源
      最近更新 更多