无法在Android上输入双数

时间:2019-05-10 21:13:50

标签: xamarin.forms xamarin.android

我有一个Xamarin Forms应用程序,其条目定义如下:

final String cookieName = "cookie_name";

// Retrieves cookie from WebClient
ResponseCookie cookie = webClient.post()
        .uri(PWD_AUTH_URI)
        .contentType(MediaType.APPLICATION_JSON)
        .syncBody(request)
        .exchange()
        .map(response -> response.cookies().getFirst(cookieName))
        .block();

// Set ResponseCookie as new cookie for response
res.addCookie(new Cookie(cookieName, cookie.getValue()));

金额属性只是一个简单的doulbe属性:

<Entry x:Name="AmountEntry"
               Text="{Binding SelectedPayment.Amount}"
               Keyboard="Numeric"
               HorizontalTextAlignment="End"
               Focused="AmountFieldGotFocus" />

在大多数使用各种数字的地区都可以使用。但是我有一个用户使用俄罗斯区域设置的报告,他不能输入任何doulbe数字。将模拟器设置为以下语言设置后,便可以重现它:

enter image description here

写逗号,但是在键入下一个数字时将其删除。根本没有写数字键盘上的点。有趣的是,当我删除Keyboard =“ Numeric”并只写一个点时,它正在工作。我在某些地区必须处理不同的事情吗?

以下是一段很好地显示问题的屏幕录像:https://github.com/MoneyFox/MoneyFox/files/3140027/device-2019-05-02-183502.zip

如果有帮助,则存储库位于GitHub:https://github.com/MoneyFox/MoneyFox 相关文件是演示项目中的ModifyPaymentUserControl和服务项目中的PaymentViewModel。

在Xamarin Forms存储库中的问题:https://github.com/xamarin/Xamarin.Forms/issues/6167

1 个答案:

答案 0 :(得分:0)

我对小数点分隔符和区域也有类似的问题。最后,我决定将点.设置为我的应用的小数点分隔符。

只需在 Shared Project (共享项目)中的App类中调用以下方法即可实现:

/// <summary>
/// Sets a custom culture which is the same as the device's culture
/// but with the dot "." as the decimal separator.
/// </summary>
/// <remarks>
/// This is particularly important in order to be able to use Keyboard.Numeric,
/// since the Keyboard.Numeric shows always dot for decimal separators independently 
/// of the Culture (De-de should use comma ",").
/// </remarks>
public static void SetCustomCulture()
{
    CultureInfo customCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
    customCulture.NumberFormat.NumberDecimalSeparator = ".";

    System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
}

希望这对您有所帮助。如果您找到更好的解决方案,请告诉我!