Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Android 如何使用4个EditText和addTextChangedListener创建PIN输入?_Android_Kotlin_Android Edittext - Fatal编程技术网

Android 如何使用4个EditText和addTextChangedListener创建PIN输入?

Android 如何使用4个EditText和addTextChangedListener创建PIN输入?,android,kotlin,android-edittext,Android,Kotlin,Android Edittext,我正在尝试创建一个包含4个EdtiText单元格的安全代码登录页。基本上,我希望单元格限制为1位,一旦用户输入一位数字,它就会跳转到下一个编辑文本。当我们到达第四个也是最后一个单元格时,我希望应用程序自动检查整个代码,如果代码正确,则更改活动 以下是我的XML: <LinearLayout android:layout_width="match_parent" android:layout_height="wr

我正在尝试创建一个包含4个EdtiText单元格的安全代码登录页。基本上,我希望单元格限制为1位,一旦用户输入一位数字,它就会跳转到下一个编辑文本。当我们到达第四个也是最后一个单元格时,我希望应用程序自动检查整个代码,如果代码正确,则更改活动

以下是我的XML:

<LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/_30sdp"
                    android:layout_marginEnd="@dimen/_40sdp"
                    android:layout_marginStart="@dimen/_40sdp"
                    android:orientation="horizontal">

 <EditText
                            style="@style/LoginSecurityCode"
                            android:id="@+id/et_login_code_1"
                            android:imeOptions="actionNext"
                            android:nextFocusRight="@+id/et_login_code_2"/>

 <EditText
                            style="@style/LoginSecurityCode"
                            android:id="@+id/et_login_code_2"
                            android:imeOptions="actionNext"
                            android:nextFocusRight="@+id/et_login_code_3"/>

 <EditText
                            style="@style/LoginSecurityCode"
                            android:id="@+id/et_login_code_3"
                            android:imeOptions="actionNext"
                            android:nextFocusRight="@+id/et_login_code_4"/>

 <EditText
                            style="@style/LoginSecurityCode"
                            android:id="@+id/et_login_code_1"
                            android:imeOptions="actionNext"
                            android:nextFocusRight="@+id/et_login_code_2"/>

</LinearLayout>

以及每个编辑文本的我的样式:

<style name="LoginSecurityCode">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">@dimen/_40sdp</item>
    <item name="android:layout_marginEnd">@dimen/_8sdp</item>
    <item name="android:layout_marginBottom">@dimen/_4sdp</item>
    <item name="android:layout_marginStart">@dimen/_8sdp</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:gravity">center</item>
    <item name="android:textAlignment">center</item>
    <item name="android:background">@null</item>
    <item name="android:textSize">@dimen/_20ssp</item>
    <item name="android:textColorHint">#50000000</item>
    <item name="android:hint">@string/label_login_code_placeholder</item>
    <item name="android:importantForAutofill" tools:ignore="NewApi">no</item>
    <item name="android:inputType">numberDecimal</item>
    <item name="android:maxLines">1</item>
    <item name="android:maxLength">1</item>
</style>

匹配父项
@dimen/_40sdp
@尺寸/尺寸8sdp
@dimen/u 4sdp
@尺寸/尺寸8sdp
居中
居中
居中
@空的
@二甲基硅氧烷
#50000000
@字符串/标签\登录\代码\占位符
不
数字中心
1.
1.

重要的是要注意,我不想用4个不同的AddTextChangedListener使用noob方式,我想找到一种使用最少行Java/Kotlin的智能方式。

为什么不添加自己的键盘,并在Textview上使用输入,而不是Edittext?虽然如果你继续使用目前的方法,那么你需要添加4个Watchersmm,是的,我认为创建自己的键盘实际上是一种更好的方式,让我在定制方面有更多的自由。我还将阻止清单中的软键盘,以防止不必要的重叠。如果你愿意,我可以给你所有的东西,我已经创建了OneHanks,但不需要,因为我想把它作为练习来做。我将使用GrildLayoutManager为键盘创建一个RecycleView,并使用LiveData管理实时按键。检查以下链接这可能会有所帮助!