Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何在EditTextPreference中使用android:inputType?_Android_Xml_Edittextpreference - Fatal编程技术网

我们如何在EditTextPreference中使用android:inputType?

我们如何在EditTextPreference中使用android:inputType?,android,xml,edittextpreference,Android,Xml,Edittextpreference,我检查了EditTextPreference的文档 但是我没有在那里找到android:inputType属性。那么如何在这个代码段中使用它呢 <EditTextPreference android:key="edit" android:title="@string/location1" android:summary="@string/summary1" android:dialogTitle="@string/locat

我检查了EditTextPreference的文档

但是我没有在那里找到android:inputType属性。那么如何在这个代码段中使用它呢

<EditTextPreference
        android:key="edit"
        android:title="@string/location1"
        android:summary="@string/summary1"
        android:dialogTitle="@string/location1"
        android:dialogMessage="@string/message"
        android:inputType="text"
        android:singleLine="true"
        />


对于android:singleLine属性也有同样的疑问。

您不能从XML中执行此操作,但需要编辑TextPreference,这样您就可以通过编程方式执行此操作。在活动/片段中加载首选项后,您可以执行以下操作:

EditTextPreference pref = (EditTextPreference) PreferenceManager.findPreference("edit");
EditText prefEditText = pref.getEditText();
prefEditText.setInputType(InputType.TYPE_CLASS_TEXT);
prefEditText.setSingleLine(true);
// etc

文档没有列出该类的属性,但是
InputType
属性(以及其他
EditText
TextView
属性)仍然有效。这只在课文中有说明。另见

未明确列出其支持的所有属性,但文本说明:

那里的链接不是很有用(他们可能重新组织了一些属性,但从未更新到它的一些链接),但这里有一个到的直接链接。作为快速总结,这些值为(截至发布时):

  • 没有
  • 正文
  • textCapCharacters
  • 文本大写词
  • 文本和句子
  • 文本自动更正
  • 文本自动完成
  • 文本多行
  • textImeMultiLine
  • 文本建议
  • 纹理
  • 文本电子邮件地址
  • 文本邮件主题
  • 短信
  • 短信
  • textPersonName
  • 纺织服装
  • 文本密码
  • textVisiblePassword
  • 文本WebEditText
  • 文本过滤器
  • 文本语音
  • textWebEmailAddress
  • 文本网页密码
  • 编号
  • 数字中心
  • 数字密码
  • 电话
  • 日期时间
  • 日期
  • 时间

显然,您可以使用其中的一个或多个,并用
|
分隔(但我从未这样做过)。

您可以找到问题的答案


基本上,您需要导入androidX库并遵循我的代码。

使用androidX将输入类型设置为密码,例如:

root_preferences.xml:

<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <Preference
        android:title="Password"
        android:key="my_pref_password"/>
</androidx.preference.PreferenceScreen>
#最简单且经过测试的答案#

仅适用于EditTextPreference中的十进制值

在onCreatePreferences中编写此代码

确保同时使用该类的类和属性

范例

输入类型。输入类别编号|输入类型。输入类别编号|

public static class SettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.root_preferences, rootKey);

        EditTextPreference new_bonus= findPreference("new_bonus");
        EditTextPreference old_bonus= findPreference("old_bonus");


        EditTextPreference.OnBindEditTextListener onBindEditTextListener = new EditTextPreference.OnBindEditTextListener() {
            @Override
            public void onBindEditText(@NonNull EditText editText) {
                editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
            }
        };

        old_bonus.setOnBindEditTextListener(onBindEditTextListener);
        new_bonus.setOnBindEditTextListener(onBindEditTextListener);

    }
}

android:摘要被忽略了吗?我看不出它用在哪里。