当区域设置为印地语时,TextInputEditText 不接受 phone 数字

TextInputEditText not accepting phone number when locale is in Hindi

当区域设置更改为印地语时,应用程序不接受来自软输入键盘的输入。以下代码适用于英语。请告诉我哪里出了问题。

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/farmer_phone_number_layout"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginBottom="@dimen/dimen_10"
                android:hint="@string/mobile_number"
                android:inputType="phone"
                app:endIconMode="clear_text"
                app:errorEnabled="true"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent">
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/farmer_phone_number_edt"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:digits="@string/input_digits"
                    android:imeOptions="actionDone"
                    android:inputType="phone"
                    android:maxLength="@integer/max_length_mobile_number_at_india"
                    android:textColor="@color/black" />
            </com.google.android.material.textfield.TextInputLayout>

使用下面的代码,我正在尝试更改应用程序的区域设置。

public static Context updateResources(Context context, String countryCode) {

    Locale locale;
    locale = new Locale(countryCode.toLowerCase());
    Configuration conf = context.getResources().getConfiguration();
    conf.locale = locale;
    Locale.setDefault(locale);

    conf.setLayoutDirection(conf.locale);
    context.getResources().updateConfiguration(conf, context.getResources().getDisplayMetrics());
    return context;
}

我猜当 inputTypephone 时,它只接受数字 '0'..'9''+''*''#',它来自在标准 ASCII 下,为 phone 支持 Locale,最好删除 inputType=phone 并在您自己的 Locale.

中验证 numbers 的用户输入

根据 Rajan.Kali 的回答,删除以下语句后应用程序运行正常。

     `android:digits="@string/input_digits" `

android:inputType="phone" 在印地语语言环境中工作正常。