inputType属性不起作用。
我正在使用的支持库版本
com.android.support:preference-v7:27.1.1
但是当我使用偏好片段时,inputType似乎有效 谁能解释一下为什么?
这是EditTextPreference的代码
<EditTextPreference
android:id="@+id/computer_ip"
android:defaultValue="192.168.0.103"
android:hint="Computer Ip"
android:inputType="numberDecimal"
android:key="@string/computerIp"
android:padding="8dp"
android:textSize="16sp"
android:title="Computer Ip" />
在此代码中,当使用支持库时,inputType为numberDecimal,numberDecimal对键盘没有任何影响,而是显示带有所有字母的键盘。
答案 0 :(得分:1)
有一个简单的解决方案,只需使用
EditTextPreference preference = (EditTextPreference) findPreference("key");
EditText et = preference.getEditText();
if (et != null) {
et.setInputType(InputType.TYPE_CLASS_NUMBER);
//in fact, you can do whatever you can normally with an EditText here
}
答案 1 :(得分:0)
您需要添加自定义布局并使用android:inputType =“ number”
指定EditText<android.support.v7.preference.EditTextPreference
android:dialogLayout="@layout/preference_dialog_edittext_custom"
这样您就可以复制原始的preference_dialog_layout.xml文件并进行编辑。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="48dp"
android:layout_marginBottom="48dp"
android:overScrollMode="ifContentScrolls">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:orientation="vertical">
<TextView android:id="@android:id/message"
style="?android:attr/textAppearanceSmall"
android:layout_marginBottom="48dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?android:attr/textColorSecondary" />
<EditText
android:id="@android:id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:layout_marginStart="-4dp"
android:layout_marginEnd="-4dp" />
</LinearLayout>
</ScrollView>
答案 2 :(得分:0)
尝试一下:
EditTextPreference numberPref = findPreference(STR_PREF_KEY_JANK_THRESHOLD);
//https://developer.android.com/guide/topics/ui/settings/customize-your-settings#customize_an_edittextpreference_dialog
numberPref.setOnBindEditTextListener(
editText -> editText.setInputType(InputType.TYPE_CLASS_NUMBER));