Android支持EditTextPreference输入类型

ivk*_*kil 9 android edittextpreference android-support-library

有没有办法为其指定输入法类型android.support.v7.preference.EditTextPreference

小智 7

如果您不想使用第三方库,则可以为EditTextPreference指定布局

<EditTextPreference android:defaultValue="0"
                        android:key="some_key"
                        android:title="Title"
                        android:dialogLayout="@layout/preference_edit_text"/>
Run Code Online (Sandbox Code Playgroud)

然后在res / layout / preference_edit_text.xml中

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText android:id="@android:id/edit"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:inputType="number"
          android:singleLine="true" 
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintTop_toTopOf="parent"
          app:layout_constraintBottom_toBottomOf="parent"
          android:layout_marginStart="21dp" 
          android:layout_marginEnd="21dp"/>

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

请注意,编辑文本ID必须为:,@android:id/edit 但是您可以随意在android:inputType字段中使用任何内容

我敢肯定有一种更好的方法来对齐EditText而不是使用21dp边距,但至少可以


ivk*_*kil 5

现在可以使用Android-Support-Preference-V7-Fix库了。
固定EditTextPreference将 XML 属性(如inputType)转发到EditText,就像原始首选项所做的那样。

  • AndroidX 有一个“setOnBindEditTextListener”方法,可用于解决该问题。您可以从侦听器中更改 EditText 输入类型。请参阅https://developer.android.com/reference/androidx/preference/EditTextPreference#setOnBindEditTextListener(androidx.preference.EditTextPreference.OnBindEditTextListener) (2认同)