Xamarin.Forms Entrada

Ejemplo de descarga Descarga del ejemplo

se Xamarin.FormsEntry usa para la entrada de texto de una sola línea. Entry, al igual que la Editor vista, admite varios tipos de teclado. Además, se Entry puede usar como campo de contraseña.

Establecer y leer texto

, al igual que otras vistas que presentan texto, expone la Xamarin_Forms EntryEntry _InputView_Text" data-linktype="absolute-path">Text propiedad. Esta propiedad se puede usar para establecer y leer el texto presentado por Entry . En el ejemplo siguiente se muestra cómo establecer Text la propiedad en XAML:

<Entry x:Name="entry" Text="I am an Entry" />

En C#:

var entry = new Entry { Text = "I am an Entry" };

Para leer texto, acceda a Text la propiedad en C#:

var text = entry.Text;

Establecer texto de marcador de posición

se Entry puede establecer para mostrar el texto del marcador de posición cuando no almacena la entrada del usuario. Esto se logra estableciendo la propiedad Xamarin_Forms _InputView_Placeholder" data-linktype="absolute-path">en Placeholderstring un Entry y, a menudo, se usa para indicar el tipo de contenido adecuado para . Además, el color del texto del marcador de posición se puede controlar estableciendo la propiedad Xamarin_Forms _InputView_PlaceholderColor" data-linktype="absolute-path">PlaceholderColor en Color :

<Entry Placeholder="Username" PlaceholderColor="Olive" />
var entry = new Entry { Placeholder = "Username", PlaceholderColor = Color.Olive };

Nota:

El ancho de Entry un se puede definir estableciendo su propiedad WidthRequest . No dependa del ancho de un Entry que se está definindo en función del valor de su Text propiedad.

Impedir la entrada de texto

Se puede impedir que los usuarios modifiquen el texto de un estableciendo la propiedad , que tiene un Entry valor predeterminado de , en IsReadOnlyfalsetrue :

<Entry Text="This is a read-only Entry"
       IsReadOnly="true" />
var entry = new Entry { Text = "This is a read-only Entry", IsReadOnly = true });

Nota:

La propiedad no modifica la apariencia visual de , a diferencia de la propiedad que también cambia la apariencia IsReadonlyEntry visual de a IsEnabledEntry gris.

Transformar texto

puede transformar el uso de mayúsculas y minúsculas de su texto, almacenado en la propiedad , estableciendo Entry la propiedad en un valor de la TextTextTransformTextTransform enumeración . Esta enumeración tiene cuatro valores:

  • None indica que el texto no se transformará.
  • Default indica que se usará el comportamiento predeterminado para la plataforma. Este es el valor predeterminado de la propiedad TextTransform.
  • Lowercase indica que el texto se transformará a minúsculas.
  • Uppercase indica que el texto se transformará en mayúsculas.

En el ejemplo siguiente se muestra la transformación de texto a mayúsculas:

<Entry Text="This text will be displayed in uppercase."
       TextTransform="Uppercase" />

El código de C# equivalente es el siguiente:

Entry entry = new Entry
{
    Text = "This text will be displayed in uppercase.",
    TextTransform = TextTransform.Uppercase
};

Limitar la longitud de entrada

La Xamarin_Forms _InputView_MaxLength" data-linktype="absolute-path">MaxLength se puede usar para limitar la longitud de entrada permitida para Entry . Esta propiedad debe establecerse en un entero positivo:

<Entry ... MaxLength="10" />
var entry = new Entry { ... MaxLength = 10 };

Un valor de propiedad Xamarin_Forms _InputView_MaxLength" data-linktype="absolute-path">de 0 indica que no se permitirá ninguna entrada, y un valor de , que es el valor predeterminado para , indica que no hay ningún límite efectivo en el número de caracteres que se MaxLengthint.MaxValueEntry pueden escribir.

espaciado entre caracteres

El espaciado de caracteres se puede aplicar a Entry un estableciendo la Entry.CharacterSpacing propiedad en un double valor:

<Entry ...
       CharacterSpacing="10" />

El código de C# equivalente es el siguiente:

Entry entry = new Entry { CharacterSpacing = 10 };

El resultado es que los caracteres del texto mostrado por están separados EntryCharacterSpacing por unidades independientes del dispositivo.

Nota:

El CharacterSpacing valor de propiedad se aplica al texto mostrado por las propiedades y TextPlaceholder .

Campos de contraseña

Entry proporciona la IsPassword propiedad . Cuando IsPassword es , el contenido del campo se presentará como true círculos negros:

En XAML:

<Entry IsPassword="true" />

En C#:

var MyEntry = new Entry { IsPassword = true };

Ejemplo de IsPassword de entrada

Los marcadores de posición se pueden usar con instancias de Entry que están configuradas como campos de contraseña:

En XAML:

<Entry IsPassword="true" Placeholder="Password" />

En C#:

var MyEntry = new Entry { IsPassword = true, Placeholder = "Password" };

Ejemplo de isPassword y marcador de posición de entrada

Establecer la posición del cursor y la longitud de selección de texto

La propiedad Xamarin_Forms _Entry_CursorPosition" data-linktype="absolute-path">se puede usar para devolver o establecer la posición en la que se insertará el carácter siguiente en la cadena almacenada en la propiedad CursorPosition Xamarin_Forms CursorPosition _InputView_Text" data-linktype="absolute-path">: Text

<Entry Text="Cursor position set" CursorPosition="5" />
var entry = new Entry { Text = "Cursor position set", CursorPosition = 5 };

El valor predeterminado de la propiedad Xamarin_Forms _Entry_CursorPosition" data-linktype="absolute-path">CursorPosition es 0, lo que indica que el texto se insertará al principio de Entry .

Además, la propiedad Xamarin_Forms _Entry_SelectionLength" data-linktype="absolute-path">se SelectionLength puede usar para devolver o establecer la longitud de la selección de texto dentro de Entry :

<Entry Text="Cursor position and selection length set" CursorPosition="2" SelectionLength="10" />
var entry = new Entry { Text = "Cursor position and selection length set", CursorPosition = 2, SelectionLength = 10 };

El valor predeterminado de la propiedad Xamarin_Forms _Entry_SelectionLength" data-linktype="absolute-path">es 0, lo que indica que no hay SelectionLength texto seleccionado.

Mostrar un botón borrar

La propiedad se puede usar para controlar si muestra un botón borrar, lo que permite al ClearButtonVisibilityEntry usuario borrar el texto. Esta propiedad se debe establecer en un miembro de enumeración ClearButtonVisibility:

  • Never indica que nunca se mostrará un botón borrar. Este es el valor predeterminado de la propiedad Entry.ClearButtonVisibility.
  • WhileEditing indica que se mostrará un botón borrar en Entry , mientras que tiene el foco y el texto.

En el ejemplo siguiente se muestra cómo establecer la propiedad en XAML:

<Entry Text="Xamarin.Forms"
       ClearButtonVisibility="WhileEditing" />

El código de C# equivalente es el siguiente:

var entry = new Entry { Text = "Xamarin.Forms", ClearButtonVisibility = ClearButtonVisibility.WhileEditing };

En las capturas de pantalla siguientes se muestra Entry un elemento con el botón Borrar habilitado:

Captura de pantalla de una entrada con un botón borrar en iOS y Android

Personalización del teclado

El teclado que se presenta cuando los usuarios interactúan con un se puede establecer mediante programación a través de la propiedad EntryEntry data-linktype="absolute-path">de Xamarin_Forms _InputView_Keyboard" en Keyboard una de las siguientes propiedades de la Keyboard clase :

Esto se puede lograr en XAML de la siguiente manera:

<Entry Keyboard="Chat" />

El código de C# equivalente es el siguiente:

var entry = new Entry { Keyboard = Keyboard.Chat };

Puede encontrar ejemplos de cada teclado en nuestro repositorio Recipes.

La clase Keyboard tiene también un patrón de diseño Factory Method Create que puede usarse para personalizar un teclado mediante la especificación del comportamiento de las mayúsculas y minúsculas, el corrector ortográfico y las sugerencias. Los valores de enumeración KeyboardFlags se especifican como argumentos para el método, con la devolución de un Keyboard personalizado. La enumeración KeyboardFlags contiene los valores siguientes:

El ejemplo de código XAML siguiente muestra cómo personalizar el Keyboard predeterminado para ofrecer finalizaciones de palabras y poner en mayúsculas todos los caracteres especificados:

<Entry Placeholder="Enter text here">
    <Entry.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </Entry.Keyboard>
</Entry>

El código de C# equivalente es el siguiente:

var entry = new Entry { Placeholder = "Enter text here" };
entry.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);

Personalización de la clave de devolución

La apariencia de la tecla de retorno en el teclado flexible, que se muestra cuando tiene el foco, se puede personalizar estableciendo la propiedad EntryEntry data-linktype="absolute-path">de Xamarin_Forms _Entry_ReturnType" en ReturnType un valor de la enumeración ReturnType :

En el ejemplo xaml siguiente se muestra cómo establecer la clave de retorno:

<Entry ReturnType="Send" />

El código de C# equivalente es el siguiente:

var entry = new Entry { ReturnType = ReturnType.Send };

Nota:

La apariencia exacta de la clave de devolución depende de la plataforma. En iOS, la clave de retorno es un botón basado en texto. Sin embargo, en las plataformas Android y Universal Windows, la clave de retorno es un botón basado en iconos.

Cuando se presiona la tecla de retorno, el evento se ejecuta y se ejecuta cualquier especificado por la propiedad CompletedICommandCompleted data-linktype="absolute-path">Xamarin_Forms ReturnCommand _Entry_ReturnCommand". Además, cualquier especificado por la propiedad object Xamarin_Forms object _Entry_ReturnCommandParameter" data-linktype="absolute-path">se pasará a como ReturnCommandParameterICommand parámetro. Para obtener más información sobre los comandos, consulte The Command Interface (La interfaz de comandos).

Habilitación y deshabilitación de la revisión ortográfica

La Xamarin_Forms _InputView_IsSpellCheckEnabled" data-linktype="absolute-path">propiedad controla si la revisión ortográfica IsSpellCheckEnabled está habilitada. De forma predeterminada, la propiedad se establece en true . A medida que el usuario escribe texto, se indican errores ortográficos.

Sin embargo, para algunos escenarios de entrada de texto, como escribir un nombre de usuario, la revisión ortográfica proporciona una experiencia negativa y se debe deshabilitar estableciendo la propiedad Xamarin_Forms _InputView_IsSpellCheckEnabled" data-linktype="absolute-path">en IsSpellCheckEnabledfalse :

<Entry ... IsSpellCheckEnabled="false" />
var entry = new Entry { ... IsSpellCheckEnabled = false };

Nota:

Cuando la propiedad Xamarin_Forms _InputView_IsSpellCheckEnabled" data-linktype="absolute-path">se establece en y no se usa un teclado personalizado, se deshabilitará el corrector ortólogo IsSpellCheckEnabledfalse nativo. Sin embargo, si se ha establecido un valor que deshabilita la revisión ortográfica, como Keyboard Xamarin_Forms Keyboard _Keyboard_Chat" data-linktype="absolute-path">, la propiedad se Keyboard.ChatIsSpellCheckEnabled omite. Por lo tanto, la propiedad no se puede usar para habilitar la revisión ortográfica de un que Keyboard la deshabilita explícitamente.

Habilitación y deshabilitación de la predicción de texto

La Xamarin_Forms _Entry_IsTextPredictionEnabled" data-linktype="absolute-path">controla si la predicción de texto y la corrección IsTextPredictionEnabled automática de texto están habilitadas. De forma predeterminada, la propiedad se establece en true . A medida que el usuario escribe texto, se presentan las predicciones de palabras.

Sin embargo, para algunos escenarios de entrada de texto, como escribir un nombre de usuario, la predicción de texto y la corrección automática de texto proporcionan una experiencia negativa y deben deshabilitarse estableciendo la propiedad Xamarin_Forms _Entry_IsTextPredictionEnabled" data-linktype="absolute-path">en IsTextPredictionEnabledfalse :

<Entry ... IsTextPredictionEnabled="false" />
var entry = new Entry { ... IsTextPredictionEnabled = false };

Nota:

Cuando la propiedad Xamarin_Forms _Entry_IsTextPredictionEnabled" data-linktype="absolute-path">se establece en y no se usa un teclado personalizado, la predicción de texto y la corrección automática de texto se IsTextPredictionEnabledfalse deshabilitan. Sin embargo, si Keyboard se ha establecido un que deshabilita la predicción de texto, se IsTextPredictionEnabled omite la propiedad . Por lo tanto, la propiedad no se puede usar para habilitar la predicción de texto para un Keyboard que la deshabilita explícitamente.

Colores

La entrada se puede establecer para usar un fondo personalizado y colores de texto a través de las siguientes propiedades enlazables:

  • TextColor: establece el color del texto.
  • BackgroundColor: establece el color que se muestra detrás del texto.

Es necesario tener especial cuidado para asegurarse de que los colores se puedan usar en cada plataforma. Dado que cada plataforma tiene valores predeterminados diferentes para el texto y los colores de fondo, a menudo deberá establecer ambos si establece uno.

Use el código siguiente para establecer el color de texto de una entrada:

En XAML:

<Entry TextColor="Green" />

En C#:

var entry = new Entry();
entry.TextColor = Color.Green;

Ejemplo de TextColor de entrada

Tenga en cuenta que el marcador de posición no se ve afectado por el TextColor especificado.

Para establecer el color de fondo en XAML:

<Entry BackgroundColor="#2c3e50" />

En C#:

var entry = new Entry();
entry.BackgroundColor = Color.FromHex("#2c3e50");

Ejemplo backgroundColor de entrada

Tenga cuidado de asegurarse de que los colores de fondo y texto que elija se puedan usar en cada plataforma y no oculten ningún texto de marcador de posición.

Eventos e interactividad

La entrada expone dos eventos:

  • TextChanged : se genera cuando el texto cambia en la entrada. Proporciona el texto antes y después del cambio.
  • Completed : se genera cuando el usuario ha finalizado la entrada presionando la tecla de retorno en el teclado.

Nota:

La VisualElement clase , de la que Entry hereda, también tiene eventos Focused y Unfocused .

Completado

El Completed evento se usa para reaccionar a la finalización de una interacción con una entrada. Completed se genera cuando el usuario termina la entrada con un campo presionando la tecla de retorno en el teclado (o presionando la tecla Tab en UWP). El controlador del evento es un controlador de eventos genérico, que toma el remitente y EventArgs :

void Entry_Completed (object sender, EventArgs e)
{
    var text = ((Entry)sender).Text; //cast sender to access the properties of the Entry
}

El evento completado se puede suscribir a en XAML:

<Entry Completed="Entry_Completed" />

y C#:

var entry = new Entry ();
entry.Completed += Entry_Completed;

Después de que se descime el evento, se ejecuta cualquier especificado por la propiedad CompletedICommand Xamarin_Forms Completed _Entry_ReturnCommand" data-linktype="absolute-path">, con el especificado por la propiedad ReturnCommand Xamarin_Forms objectICommand _Entry_ReturnCommandParameter" data-linktype="absolute-path">ReturnCommandParameterICommand que se pasa a .

TextChanged

El TextChanged evento se usa para reaccionar a un cambio en el contenido de un campo.

TextChanged se genera cada vez que Text cambia el de Entry . El controlador del evento toma una instancia de TextChangedEventArgs . TextChangedEventArgsproporciona acceso a los valores antiguos y nuevos de a EntryText través de las propiedades OldTextValue y NewTextValue :

void Entry_TextChanged (object sender, TextChangedEventArgs e)
{
    var oldText = e.OldTextValue;
    var newText = e.NewTextValue;
}

El TextChanged evento se puede suscribir a en XAML:

<Entry TextChanged="Entry_TextChanged" />

y C#:

var entry = new Entry ();
entry.TextChanged += Entry_TextChanged;