Xamarin.Forms Editor
EditorOvládací prvek se používá pro příjem víceřádkového vstupu.
Nastavení a čtení textu
EditorPodobně jako u jiných zobrazení pro text prezentace zpřístupňuje Text vlastnost. Tato vlastnost se dá použít k nastavení a čtení textu, který prezentuje Editor . Následující příklad ukazuje nastavení Text vlastnosti v jazyce XAML:
<Editor x:Name="editor" Text="I am an Editor" />
V jazyce C#:
var editor = new Editor { Text = "I am an Editor" };
Chcete-li číst text, přejděte k Text vlastnosti v jazyce C#:
var text = editor.Text;
Nastavit zástupný text
Je Editor možné nastavit, aby se při ukládání uživatelského vstupu zobrazoval zástupný text. K tomu je potřeba nastavit Xamarin_Forms _InputView_Placeholder "data-LINKTYPE =" absolutní cesta ">Placeholder vlastnost na a string a často se používá k určení typu obsahu, který je vhodný pro Editor . Kromě toho lze nastavit barvu zástupného textu pomocí nastavení Xamarin_Forms _InputView_PlaceholderColor "data-LINKTYPE =" absolutní cesta ">PlaceholderColor vlastnost na hodnotu Color :
<Editor Placeholder="Enter text here" PlaceholderColor="Olive" />
var editor = new Editor { Placeholder = "Enter text here", PlaceholderColor = Color.Olive };
Zabránit zadání textu
Uživatelům lze zabránit v úpravě textu nastavením EditorIsReadOnly vlastnosti, která má výchozí hodnotu false , na true :
<Editor Text="This is a read-only Editor"
IsReadOnly="true" />
var editor = new Editor { Text = "This is a read-only Editor", IsReadOnly = true });
Poznámka
IsReadonlyVlastnost nezmění vizuální vzhled prvku Editor , na rozdíl od IsEnabled vlastnosti, která také změní vzhled vizuálu na Editor šedou.
Transformace textu
EditorMůže transformovat velká a malá písmena jeho textu, uložený ve Text vlastnosti nastavením TextTransform vlastnosti na hodnotu TextTransform výčtu. Tento výčet má čtyři hodnoty:
Noneoznačuje, že text nebude transformován.Defaultindikuje, že se použije výchozí chování platformy. Toto je výchozí hodnotaTextTransformVlastnosti.Lowercaseindikuje, že text bude transformovat na malá písmena.Uppercaseindikuje, že text bude transformovat na velká písmena.
Následující příklad ukazuje transformování textu na velká písmena:
<Editor Text="This text will be displayed in uppercase."
TextTransform="Uppercase" />
Ekvivalentní kód jazyka C#:
Editor editor = new Editor
{
Text = "This text will be displayed in uppercase.",
TextTransform = TextTransform.Uppercase
};
Omezení délky vstupu
Vlastnost Xamarin_Forms _InputView_MaxLength data-LINKTYPE = "absolutní cesta >" MaxLength lze použít k omezení vstupní délky, která je povolena pro Editor . Tato vlastnost by měla být nastavena na kladné celé číslo:
<Editor ... MaxLength="10" />
var editor = new Editor { ... MaxLength = 10 };
Xamarin_Forms _InputView_MaxLength "data-LINKTYPE =" absolutní cesta ">MaxLength hodnota vlastnosti 0 značí, že žádný vstup nebude povolen a hodnota int.MaxValue , která je výchozí hodnotou pro Editor , znamená, že neexistuje žádný efektivní limit počtu znaků, které mohou být zadány.
Mezery mezi znaky
Pro objekt lze použít mezery mezi znaky Editor nastavením Editor.CharacterSpacing vlastnosti na double hodnotu:
<Editor ...
CharacterSpacing="10" />
Ekvivalentní kód jazyka C#:
Editor editor = new editor { CharacterSpacing = 10 };
Výsledkem je, že znaky v textu zobrazovaném Editor mezerami, které jsou CharacterSpacing nezávislé na zařízení od sebe.
Poznámka
CharacterSpacingHodnota vlastnosti se použije na text zobrazený TextPlaceholder vlastnostmi a.
Automatická velikost editoru
Je Editor možné nastavit automatickou velikost jejího obsahu nastavením Xamarin_Forms Editor _Editor_AutoSize "data-LINKTYPE =" absolutní cesta ">Editor.AutoSize vlastnost na Xamarin_Forms _EditorAutoSizeOption_TextChanges data-LINKTYPE =" absolutní cesta ">TextChanges , což je hodnota EditorAutoSizeOption výčtu. Tento výčet má dvě hodnoty:
- _EditorAutoSizeOption_Disabled "data-LINKTYPE =" absolutní cesta ">
Disabledoznačuje, že automatické změny velikosti jsou zakázané a výchozí hodnota je. - Xamarin_Forms _EditorAutoSizeOption_TextChanges "data-LINKTYPE =" absolutní cestu ">
TextChangesoznačuje, že je povoleno automatické změny velikosti.
To lze provést v kódu následujícím způsobem:
<Editor Text="Enter text here" AutoSize="TextChanges" />
var editor = new Editor { Text = "Enter text here", AutoSize = EditorAutoSizeOption.TextChanges };
Pokud je povolena automatická změna velikosti, Výška se Editor zvýší, když ji uživatel vyplní textem, a výška se zmenší, protože uživatel odstraní text.
Poznámka
EditorPokud byla EditorHeightRequest nastavena vlastnost Xamarin_Forms _VisualElement_HeightRequest data-LINKTYPE = "absolutní cesta" > vlastnost, nebude Automatická velikost.
Přizpůsobení klávesnice
Klávesnice zobrazená v případě, že uživatelé komunikují s nástrojem Editor , lze nastavit programově prostřednictvím Xamarin_Forms Editor _InputView_Keyboard "data-LINKTYPE =" absolutní cesta ">Keyboard na jednu z následujících vlastností Keyboard třídy:
- _Keyboard_Chat "data-LINKTYPE =" absolutní cesta ">
Chat– používá se pro text a místa, kde je Emoji užitečná. - Xamarin_Forms _Keyboard_Default "data-LINKTYPE =" absolutní cesta ">
Default– výchozí klávesnice. - Xamarin_Forms _Keyboard_Email "data-LINKTYPE =" absolutní cestu ">
Email– používá se při zadávání e-mailových adres. - Xamarin_Forms _Keyboard_Numeric "data-LINKTYPE =" absolutní cestu ">
Numeric– používá se při zadávání čísel. - Xamarin_Forms _Keyboard_Plain "data-LINKTYPE =" absolutní cestu ">
Plain– používá se při zadávání textu, bezKeyboardFlagszadání. - Xamarin_Forms _Keyboard_Telephone "data-LINKTYPE =" absolutní cestu ">
Telephone– používá se při zadávání telefonních čísel. - Xamarin_Forms _Keyboard_Text "data-LINKTYPE =" absolutní cestu ">
Text– používá se při zadávání textu. - Xamarin_Forms _Keyboard_Url "data-LINKTYPE =" absolutní cestu ">
Url– slouží k zadání webových adres cest k souborům & .
To lze provést v jazyce XAML následujícím způsobem:
<Editor Keyboard="Chat" />
Ekvivalentní kód jazyka C#:
var editor = new Editor { Keyboard = Keyboard.Chat };
Příklady jednotlivých klávesnic najdete v našem úložišti recepty .
KeyboardTřída má také Create výrobní metodu, která se dá použít k přizpůsobení klávesnice zadáním velkých a malých písmen a chování návrhů. KeyboardFlags hodnoty výčtu jsou zadány jako argumenty pro metodu s přizpůsobenou Keyboard vrácenou hodnotou. KeyboardFlagsVýčet obsahuje následující hodnoty:
- Xamarin_Forms _KeyboardFlags_None "data-LINKTYPE =" absolutní cestu ">
None– na klávesnici nejsou přidány žádné funkce. - Xamarin_Forms _KeyboardFlags_CapitalizeSentence "data-LINKTYPE =" absolutní cesta ">
CapitalizeSentence– Určuje, že první písmeno prvního slova v každé zadané větě bude automaticky na velká písmena. - Xamarin_Forms _KeyboardFlags_Spellcheck "data-LINKTYPE =" absolutní cestu ">
Spellcheck– Určuje, že se na zadaný text provede kontrola pravopisu. - Xamarin_Forms _KeyboardFlags_Suggestions "data-LINKTYPE =" absolutní cesta ">
Suggestions– Určuje, že se pro zadaný text bude nabízet dokončování slov. - Xamarin_Forms _KeyboardFlags_CapitalizeWord "data-LINKTYPE =" absolutní cestu ">
CapitalizeWord– Určuje, že první písmeno každého slova bude automaticky velkými písmeny. - Xamarin_Forms _KeyboardFlags_CapitalizeCharacter "data-LINKTYPE =" absolutní cestu ">
CapitalizeCharacter– Určuje, že každý znak bude automaticky velkými písmeny. - Xamarin_Forms _KeyboardFlags_CapitalizeNone "data-LINKTYPE =" absolutní cestu ">
CapitalizeNone– označuje, že nedojde k žádnému automatickému psaní velkých písmen. - Xamarin_Forms _KeyboardFlags_All "data-LINKTYPE =" absolutní cesta ">
All– Určuje, že se v zadaném textu provede kontrola pravopisu, dokončování slov a velká písmena věty.
Následující příklad kódu XAML ukazuje, jak přizpůsobit výchozí hodnotu Keyboard pro nabídky dokončování slov a velké množství všech zadaných znaků:
<Editor>
<Editor.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Editor.Keyboard>
</Editor>
Ekvivalentní kód jazyka C#:
var editor = new Editor();
editor.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);
Povolit a zakázat kontrolu pravopisu
Vlastnost Xamarin_Forms _InputView_IsSpellCheckEnabled data-LINKTYPE = "absolutní cesta" >IsSpellCheckEnabled Určuje, zda je povolena kontrola pravopisu. Ve výchozím nastavení je vlastnost nastavena na hodnotu true . Když uživatel zadá text, jsou uvedeny chybné pravopisné chyby.
U některých scénářů zadávání textu, jako je například zadání uživatelského jména, kontrola pravopisu poskytuje negativní prostředí, takže by měl být zakázán nastavením Xamarin_Forms _InputView_IsSpellCheckEnabled "data-LINKTYPE =" absolutní cesta ">IsSpellCheckEnabled vlastnosti na false :
<Editor ... IsSpellCheckEnabled="false" />
var editor = new Editor { ... IsSpellCheckEnabled = false };
Poznámka
Pokud je vlastnost Xamarin_Forms _InputView_IsSpellCheckEnabled data-LINKTYPE = "absolutní cesta" >IsSpellCheckEnabled nastavena na hodnotu false a vlastní klávesnice se nepoužívá, bude nativní kontrola pravopisu zakázána. Pokud Keyboard byla však nastavena sada, která zakáže kontrolu pravopisu, například Xamarin_Forms Keyboard _Keyboard_Chat "data-LINKTYPE =" absolutní cesta ">Keyboard.Chat , bude IsSpellCheckEnabled vlastnost ignorována. Proto nelze vlastnost použít k povolení kontroly pravopisu pro Keyboard , která ji explicitně zakáže.
Povolit a zakázat prediktivní vkládání textu
IsTextPredictionEnabledVlastnost určuje, zda je povolena prediktivní vkládání textu a automatické opravy textu. Ve výchozím nastavení je vlastnost nastavena na hodnotu true . Když uživatel zadá text, zobrazí se wordový předpovědi.
U některých scénářů zadávání textu, jako je například zadání uživatelského jména, prediktivního vkládání textu a automatických oprav textu, je však záporné prostředí a mělo by být zakázáno nastavením IsTextPredictionEnabled vlastnosti na false :
<Editor ... IsTextPredictionEnabled="false" />
var editor = new Editor { ... IsTextPredictionEnabled = false };
Poznámka
Když IsTextPredictionEnabled je vlastnost nastavená na false a vlastní klávesnice se nepoužívá, prediktivní vkládání textu a automatické opravy textu jsou zakázané. Pokud však byla Keyboard nastavena sada, která zakáže prediktivní vkládání textu, IsTextPredictionEnabled vlastnost je ignorována. Proto nelze vlastnost použít k povolení prediktivního vkládání textu pro objekt Keyboard , který ji explicitně zakáže.
Barvy
Editor může být nastaveno na použití vlastní barvy pozadí prostřednictvím BackgroundColor Vlastnosti. Zvláštní péče je nutné zajistit, aby byly barvy použitelné na každé platformě. Vzhledem k tomu, že každá platforma má jiné výchozí hodnoty barvy textu, možná budete muset nastavit vlastní barvu pozadí pro každou platformu. Další informace o optimalizaci uživatelského rozhraní pro jednotlivé platformy najdete v tématu práce s nástroji pro vylepšení platforem .
V jazyce C#:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
//dark blue on UWP & Android, light blue on iOS
var editor = new Editor { BackgroundColor = Device.RuntimePlatform == Device.iOS ? Color.FromHex("#A4EAFF") : Color.FromHex("#2c3e50") };
layout.Children.Add(editor);
}
}
V jazyce XAML:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor>
<Editor.BackgroundColor>
<OnPlatform x:TypeArguments="x:Color">
<On Platform="iOS" Value="#a4eaff" />
<On Platform="Android, UWP" Value="#2c3e50" />
</OnPlatform>
</Editor.BackgroundColor>
</Editor>
</StackLayout>
</ContentPage.Content>
</ContentPage>

Ujistěte se, že barvy pozadí a textu, které zvolíte, jsou použitelné na každé platformě a neskrýtejte žádný zástupný text.
Události a interaktivita
Editor zpřístupňuje dvě události:
- TextChanged – vyvoláno při změně textu v editoru. Poskytuje text před změnou a po změně.
- Dokončeno – vyvoláno, když uživatel ukončil vstup stisknutím klávesy Return na klávesnici.
Poznámka
Třída VisualElement , ze které Entry dědí , má také události a FocusedUnfocused .
Dokončeno
Událost Completed se používá k reakci na dokončení interakce s Editor objektem . Completed je vyvolána, když uživatel ukončí vstup polem zadáním klávesy Return na klávesnici (nebo stisknutím klávesy Tab na UPW). Obslužná rutina události je obecná obslužná rutina události, která vezme odesílatele a EventArgs :
void EditorCompleted (object sender, EventArgs e)
{
var text = ((Editor)sender).Text; // sender is cast to an Editor to enable reading the `Text` property of the view.
}
Dokončenou událost je možné přihlásit k odběru v kódu a XAML:
V jazyce C#:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
var editor = new Editor ();
editor.Completed += EditorCompleted;
layout.Children.Add(editor);
}
}
V jazyce XAML:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor Completed="EditorCompleted" />
</StackLayout>
</ContentPage.Content>
</Contentpage>
Textchanged
Událost TextChanged se používá k reakci na změnu obsahu pole.
TextChanged je vyvolána při Text každé Editor změně. Obslužná rutina události přebírá instanci TextChangedEventArgs . TextChangedEventArgsposkytuje přístup ke starým a novým hodnotám EditorText objektu prostřednictvím OldTextValue vlastností a NewTextValue :
void EditorTextChanged (object sender, TextChangedEventArgs e)
{
var oldText = e.OldTextValue;
var newText = e.NewTextValue;
}
Dokončenou událost je možné přihlásit k odběru v kódu a XAML:
V kódu:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
var editor = new Editor ();
editor.TextChanged += EditorTextChanged;
layout.Children.Add(editor);
}
}
V jazyce XAML:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor TextChanged="EditorTextChanged" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
Stažení ukázky