当区域设置为印地语时,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;
}
我猜当 inputType
是 phone
时,它只接受数字 '0'..'9'
、'+'
、'*'
和 '#'
,它来自在标准 ASCII 下,为 phone
支持 Locale
,最好删除 inputType=phone
并在您自己的 Locale
.
中验证 numbers
的用户输入
根据 Rajan.Kali 的回答,删除以下语句后应用程序运行正常。
`android:digits="@string/input_digits" `
android:inputType="phone" 在印地语语言环境中工作正常。
当区域设置更改为印地语时,应用程序不接受来自软输入键盘的输入。以下代码适用于英语。请告诉我哪里出了问题。
<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;
}
我猜当 inputType
是 phone
时,它只接受数字 '0'..'9'
、'+'
、'*'
和 '#'
,它来自在标准 ASCII 下,为 phone
支持 Locale
,最好删除 inputType=phone
并在您自己的 Locale
.
numbers
的用户输入
根据 Rajan.Kali 的回答,删除以下语句后应用程序运行正常。
`android:digits="@string/input_digits" `
android:inputType="phone" 在印地语语言环境中工作正常。