Текстовые поля в .NET MAUI: Editor и Entry

Для ввода текстовых данных в приложении .NET MAUI могут использоваться два типа компонентов — Editor(многострочный редактор) и Entry(однострочный редактор). В этой части мы рассмотрим работу с текстовыми полями в .NET MAUI и XAML

Общие свойства Editor и Entry

Так как оба редактора предназначены для ввода текста, то и свойства у этих редакторов, в большинстве случаев, аналогичны. Поэтому стоит сразу рассмотреть те свойства, которые присущи и Editor и Entry, а затем, рассмотреть отличия. Итак, оба редактора содержат следующие свойства:

Свойство Тип Описание
CharacterSpacing double Определяет интервал между символами текста
CursorPosition int Определяет положение курсора в редакторе
FontAttributes, FontAutoScalingEnabled, FontFamily, FontSize Свойства для работы со шрифтом: оформление, масштабирование, семейство и размер шрифта. Подробное описание см. в этой части
IsReadOnly bool Определяет, следует ли запретить пользователю изменять текст. Значение по умолчанию false.
IsSpellCheckEnabled bool Определяет, включена ли проверка орфографии
IsTextPredictionEnabled bool Определяет, включено ли прогнозирование текста и автоматическое исправление текста (словарь T9)
Keyboard Keyboard Указывает клавиатуру, отображаемую при вводе текста
MaxLength int Определяет максимальную длину входных данных
Placeholder string Определяет текст, отображаемый при пустом элементе управления
PlaceholderColor Color Определяет цвет текста-заполнителя
SelectionLength int Возвращает длину выделенного текста
Text string Определяет текст, введенный в элемент управления.
TextColor, TextTransform Свойства для работы с текстом: цвет и регистр текста. Подробное описание см. в этой части

Кроме того, оба элемента управления предоставляют нам для работы следующее событие:

public event TextChangedEventArgs> TextChanged;

возникающее каждый раз при изменении текста. Тип TextChangedEventArgs предоставляет нам свойства:

NewTextValue Новое значение текстового поля
OldTextValue Предыдущее значение текстового поля

 

Рассмотрим некоторые из этих свойств подробнее. Для этого создадим новое приложение .NET MAUI и изменим код файла MainPage.xaml.cs следующим образом:

namespace MauiApp8
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void OnTextChanged(object sender, TextChangedEventArgs args)
        {
            EditorLabel.Text = args.OldTextValue;
        }

    }

}

Здесь мы добавили обработчик события TextChanged для нашего будущего редактора. Теперь изменим файл MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp8.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">

            <Editor Placeholder="Введите текст (не более 10 символов)" 
                    PlaceholderColor="Blue"
                    MaxLength="10"
                    Keyboard="Text"
                    IsSpellCheckEnabled="True"
                    IsTextPredictionEnabled="True"
                    TextChanged="OnTextChanged"/>

            <Label x:Name="EditorLabel" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Здесь мы добавили текстовый редактор для которого мы задали ряд свойств из таблицы выше, обработчик события TetChanged и метку, в которой будет отображаться предыдущее значение из редактора.

Чтобы продемонстрировать работу редактора в полной мере, лучше всего запустить приложение в эмуляторе Android или же непосредственно на телефоне. Как только вы запустите приложение, то увидите редактор текста:

 

При нажатии на редактор откроется клавиатура для набора текста.

При наборе текста в редакторе вы будете видеть также, как меняется содержимое метки и, при этом, текст метки будет всегда на один символ короче, чем в редакторе так как мы отображаем в ней предыдущее значение свойства Text редактора. Теперь разберемся с тем, как мы можем управлять клавиатурой в редакторах

Вид клавиатуры в Editor и Entry

Вид клавиатуры (Keyboard) — это одно из самых интересный свойств, которое в полной мере раскрывается именно при работе приложения на мобильных устройствах. Свойство Keyboard может принимать следующие значения:

Значение Описание
Chat  текстовая клавиатура с эмодзи.
Default клавиатура по умолчанию
Email  используется для ввода адресов электронной почты
Numeric  цифровая клавиатура
Plain  предназначена для ввода текста, если нет заданных KeyboardFlags
Telephone  клавиатура для ввода телефонных номеров
Text  текстовая клавиатура
Url  клавиатура для ввода путей к файлам и веб-адресов

Например, зададим в нашем приложении клавиатуру для ввода цифр (Numeric):

<Editor Placeholder="Введите текст (не более 10 символов)" 
        PlaceholderColor="Blue"
        MaxLength="10"
        Keyboard="Numeric"
        IsSpellCheckEnabled="True"
        IsTextPredictionEnabled="True"
        TextChanged="OnTextChanged"/>

Теперь в приложении наша клавиатура будет выглядеть следующим образом:

Также, для управления клавиатурой мы можем использовать значения KeyboardFlags. На данный момент, мы можем использовать следующие флаги для клавиатуры

Значение Описание
None  указывает, что клавиатура не имеет никаких дополнительных функций.
CapitalizeSentence  указывает, что первые слова во всех вводимых предложениях автоматически начинаются с прописных букв.
Spellcheck указывает, что для вводимого текста выполняется проверка орфографии
Suggestions  указывает, что для вводимых слов предлагается завершение
CapitalizeWord  указывает, что все слова автоматически начинаются с прописных букв
CapitalizeCharacter  указывает, что все символы автоматически пишутся прописными буквами
CapitalizeNone  указывает, что автоматическая подстановка прописных букв не выполняется
All указывает, что для вводимого текста выполняется проверка орфографии, завершение слов и автоматическое написание предложений с прописной буквы

Так как KeyboardFlags представляет собой битовые флаги, то мы можем использовать несколько флагов одновременно. Например, перепишем XAML-код нашего редактора следующим образом:

<Editor Placeholder="Введите текст (не более 10 символов)" 
        PlaceholderColor="Blue"
        MaxLength="10"
        
        IsSpellCheckEnabled="True"
        IsTextPredictionEnabled="True"
        TextChanged="OnTextChanged">
    <Editor.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions, Spellcheck, CapitalizeWord</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </Editor.Keyboard>
</Editor>

Теперь наша клавиатура будет обычной текстовой и, при этом, каждое новое слово будет писаться с заглавной буквы, а также будет предлагаться автозавершение слов и проводиться проверка орфографии:

Теперь посмотрим на свойства Editor характерные именно для этого элемента управления.

Свойства Editor

Editor определяет следующие свойства:

Свойство Тип Описание
AutoSize EditorAutoSizeOption определяет, будет ли редактор изменять свой размер, чтобы разместить весь текст в видимой области.
HorizontalTextAlignment TextAlignment определяет горизонтальное выравнивание текста
VerticalTextAlignment TextAlignment определяет вертикальное выравнивание текста

Продемонстрируем значение этих свойств, изменив редактор в приложении следующим образом:

<Editor Placeholder="Введите текст (не более 10 символов)" 
        PlaceholderColor="Blue"
        AutoSize="TextChanges"
        VerticalTextAlignment="Center"
        HorizontalTextAlignment="Center"
        IsSpellCheckEnabled="True"
        IsTextPredictionEnabled="True"
        TextChanged="OnTextChanged"
        Keyboard="Text">
      
</Editor>

Теперь снова запустим приложение и напишем в редакторе текст, который явно не уместится в одну строку. В результате вы увидите, что Editor меняем свою высоту:

Кроме того, в соответствии с указанными настройками, текст размещается по центру как по вертикали, так и по горизонтали.

Свойства Entry

Однострочный редактор Entry предоставляет нам следующие свойства:

Свойство Тип Описание
ClearButtonVisibility ClearButtonVisibility определяет, отображается ли кнопка очистки ввода. Может принимать следующие значения:

  • Never — не показывать кнопку (значение по умолчанию)
  • WhileEditing  — показывать кнопку, когда пользователь вводит какой-либо текст
HorizontalTextAlignment TextAlignment определяет горизонтальное выравнивание текста
VerticalTextAlignment TextAlignment определяет вертикальное выравнивание текста
IsPassword bool указывает, должна ли запись визуально скрывать типизированный текст
ReturnType ReturnType указывает внешний вид кнопки «Ввод». Может принимать следующие значения:

  • Default — указывает, что конкретный ключ возврата не требуется, и используется вид, установленный платформой по умолчанию.
  • Done — указывает ключ возврата «Готово».
  • Go — указывает ключ возврата Go.
  • Next — указывает ключ возврата Next.
  • Search — указывает ключ возврата «Поиск».
  • Send — указывает ключ возврата «Отправить».

Например, изменим наше приложение следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp8.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">

            <Entry IsPassword="True"
                   ReturnType="Send"
                   ClearButtonVisibility="WhileEditing"/>

            <Label x:Name="EditorLabel" />

            
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Теперь запустим приложение и посмотрим на результат. При запуске вы увидите обычное поле ввода без каких-либо дополнительных кнопок:

Как только вы начнете набирать текст, то увидите, что он скрывается, а в правой части поля появится кнопка очистки текста:

При этом, обратите внимание на кнопку «Ввод» на клавиатуре — её внешний вид может изменяться в зависимости от того, какое значения ReturnType было установлено. В нашем случае кнопка будет содержать пиктограмму «галочку». Можете поменять значение ReturnType, например, на Search и увидите, что на кнопке будет иконка с лупой. Вид кнопки «Ввод» зависит от платформы и не везде она пиктограммы будут выглядеть одинаково — это необходимо учитывать при работе со свойством ReturnType.

Итого

Для ввода текста в .NET MAUI мы можем использовать два вида текстовых редакторов: Editor — многострочный редактор и Entry — однострочный редактор. Оба редактора содержат достаточно большое количество одинаковый свойств, например, свойство Keyboard, свойства шрифтов и оформления текста. При этом, Entry позволяет показывать кнопку очистки текста, а также менять внешний вид кнопки «Ввод». В свою очередь, Editor позволяет изменять свой размер в зависимости от размера введенного в него текста.

 

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии