Xamarin.Forms:come consentire solo numeri e punti

Xamarin.Forms:come consentire solo numeri e punti

Soluzione per Xamarin.Forms:come consentire solo numeri e punti
di seguito:

Devo solo consentire l'inserimento di numeri e punti dalla tastiera. Ho creato un renderer personalizzato per Android che eredita da EntryRenderer e sovrascrive il metodo OnElementChanged come di seguito:

    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null && Element is EntryOnlyNumber entryOnlyNumber)
        {
            string acceptedValue = "1234567890";

            if (entryOnlyNumber.AcceptComma)
                acceptedValue += ",";

            if (entryOnlyNumber.AcceptDot)
                acceptedValue += ".";

            Control.KeyListener = DigitsKeyListener.GetInstance(acceptedValue);
        }
    }

Questo è il codice in xaml:

<StackLayout Orientation="Horizontal" VerticalOptions="StartAndExpand" 
             Padding="10,20" Spacing="0">
    <Label Text="Indirizzo server:" />
    <controls:EntryOnlyNumber x:Name="EntryAddress" Text="{Binding IdAddress}" HorizontalOptions="FillAndExpand" WidthRequest="100" AcceptDot="True"/>       
    <Label Text=":" />       
    <controls:EntryOnlyNumber x:Name="EntryPort" Text="{Binding Port}"
</StackLayout>

Ma questo è il risultato su Android 7:

Come puoi vedere, il punto manca nella tastiera. Cosa devo fare per aggirare questo problema?

Come ha affermato Jason, la tastiera che viene presentata quando gli utenti interagiscono con una voce può essere impostata a livello di codice tramite la proprietà Keyboard, , su una delle seguenti proprietà della classe Keyboard:

Chatta – utilizzato per inviare messaggi di testo e luoghi in cui le emoji sono utili.

Predefinito – la tastiera predefinita.

E-mail – utilizzato quando si inseriscono gli indirizzi e-mail.

Numero – usato per inserire i numeri.

Semplice – utilizzato durante l'immissione di testo, senza KeyboardFlags specificato.

Telefono – utilizzato durante l'inserimento dei numeri di telefono.

Testo – utilizzato durante l'immissione di testo.

URL – utilizzato per inserire percorsi di file e indirizzi Web.

quindi puoi personalizzare la tastiera, non è necessario utilizzare il rendering Entry.

<StackLayout>
        <Entry Keyboard="Numeric" />
    </StackLayout>

Aggiornamento:

Puoi prendere un seguente codice:

 protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            this.Control.KeyListener = DigitsKeyListener.GetInstance("1234567890,.");
        }
    }