Xamarin.Forms Editor
Ovládací Editor
prvek slouží k přijetí víceřádkového vstupu.
Nastavení a čtení textu
Podobně Editor
jako ostatní zobrazení pro prezentaci textu zveřejňuje Text
vlastnost. Tuto vlastnost lze použít k nastavení a čtení textu, který Editor
prezentuje . Následující příklad ukazuje nastavení Text
vlastnosti v XAML:
<Editor x:Name="editor" Text="I am an Editor" />
V jazyce C#:
var editor = new Editor { Text = "I am an Editor" };
Pokud chcete přečíst text, přejděte k Text
vlastnosti v jazyce C#:
var text = editor.Text;
Nastavení zástupného textu
Dá Editor
se nastavit tak, aby zobrazoval zástupný text, když neukládá uživatelský vstup. To se provádí nastavením Placeholder
vlastnosti na string
, a často se používá k označení typu obsahu, který je vhodný pro .Editor
Kromě toho může být barva zástupného textu řízena nastavením PlaceholderColor
vlastnosti na Color
:
<Editor Placeholder="Enter text here" PlaceholderColor="Olive" />
var editor = new Editor { Placeholder = "Enter text here", PlaceholderColor = Color.Olive };
Zabránění zadávání textu
Uživatelům lze zabránit v úpravě textu nastavením Editor
IsReadOnly
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:
Vlastnost IsReadonly
nemění vzhled vizuálu objektu Editor
, na rozdíl od IsEnabled
vlastnosti, která také změní vzhled vizuálu na šedou Editor
.
Transformace textu
Velikost Editor
písmen textu uloženého Text
ve vlastnosti může transformovat nastavením TextTransform
vlastnosti na hodnotu výčtu TextTransform
. Tento výčet má čtyři hodnoty:
None
označuje, že text nebude transformován.Default
označuje, že se použije výchozí chování platformy. Toto je výchozí hodnotaTextTransform
vlastnosti.Lowercase
označuje, že text bude transformován na malá písmena.Uppercase
označuje, že text bude transformován na velká písmena.
Následující příklad ukazuje transformaci textu na velká písmena:
<Editor Text="This text will be displayed in uppercase."
TextTransform="Uppercase" />
Ekvivalentní kód jazyka C# je:
Editor editor = new Editor
{
Text = "This text will be displayed in uppercase.",
TextTransform = TextTransform.Uppercase
};
Omezení délky vstupu
Vlastnost MaxLength
lze použít k omezení vstupní délky, která je povolena pro Editor
objekt . Tato vlastnost by měla být nastavena na kladné celé číslo:
<Editor ... MaxLength="10" />
var editor = new Editor { ... MaxLength = 10 };
MaxLength
Hodnota vlastnosti 0 označuje, že nebude povolen žádný vstup, a hodnota int.MaxValue
, která je výchozí hodnotou pro znak Editor
, označuje, že neexistuje žádný efektivní limit počtu znaků, které mohou být zadány.
Mezery mezi znaky
Mezery mezi znaky lze použít u Editor
vlastnosti nastavením Editor.CharacterSpacing
vlastnosti na double
hodnotu:
<Editor ...
CharacterSpacing="10" />
Ekvivalentní kód jazyka C# je:
Editor editor = new editor { CharacterSpacing = 10 };
Výsledkem je, že znaky v textu zobrazeném řádkem Editor
jsou CharacterSpacing
oddělené jednotky nezávislé na zařízení.
Poznámka:
Hodnota CharacterSpacing
vlastnosti se použije na text zobrazený vlastnostmi Text
a Placeholder
vlastnostmi.
Automatická velikost editoru
Lze Editor
vytvořit automatické velikosti obsahu nastavením Editor.AutoSize
vlastnosti na TextChanges
, což je hodnota výčtu EditorAutoSizeOption
. Tento výčet má dvě hodnoty:
Disabled
označuje, že automatická změna velikosti je zakázaná a je výchozí hodnotou.TextChanges
označuje, že je povolená automatická změna 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 povolená automatická změna velikosti, výška se zvýší, když ho Editor
uživatel vyplní textem, a výška se sníží, když uživatel odstraní text.
Poznámka:
Pokud Editor
byla vlastnost nastavená, HeightRequest
automaticky se velikost nezvětšuje.
Přizpůsobení klávesnice
Klávesnice, která se zobrazí, když uživatelé komunikují s objektem Editor
, lze programově nastavit prostřednictvím Keyboard
vlastnosti na jednu z následujících vlastností třídy Keyboard
:
Chat
– používá se pro textování a místa, kde jsou emoji užitečné.Default
– výchozí klávesnice.Email
– používá se při zadávání e-mailových adres.Numeric
– používá se při zadávání čísel.Plain
– používá se při zadávání textu bez zadáníKeyboardFlags
.Telephone
– používá se při zadávání telefonních čísel.Text
– používá se při zadávání textu.Url
– používá se pro zadávání cest k souborům a webovým adresám.
To lze provést v XAML následujícím způsobem:
<Editor Keyboard="Chat" />
Ekvivalentní kód jazyka C# je:
var editor = new Editor { Keyboard = Keyboard.Chat };
Příklady jednotlivých klávesnic najdete v našem úložišti Recepty .
Třída Keyboard
má také metodu Create
továrny, kterou lze použít k přizpůsobení klávesnice zadáním velkých písmen, kontroly pravopisu a chování návrhu. KeyboardFlags
Hodnoty výčtu se zadají jako argumenty metody s vráceným přizpůsobeným Keyboard
kódem. Výčet KeyboardFlags
obsahuje následující hodnoty:
None
– na klávesnici nejsou přidány žádné funkce.CapitalizeSentence
– označuje, že první písmeno prvního slova každé zadané věty bude automaticky velkými písmeny.Spellcheck
– označuje, že kontrola pravopisu se provede u zadaného textu.Suggestions
– označuje, že dokončování slov bude nabízeno na zadaném textu.CapitalizeWord
– označuje, že první písmeno každého slova bude automaticky velkými písmeny.CapitalizeCharacter
– označuje, že každý znak bude automaticky velkými písmeny.CapitalizeNone
– značí, že nedojde k automatickému psaní velkých písmen.All
– označuje, že kontrola pravopisu, dokončování slov a velká písmena věty budou na zadaném textu.
Následující příklad kódu XAML ukazuje, jak přizpůsobit výchozí nastavení Keyboard
pro dokončování slov a velká písmena každého zadaného znaku:
<Editor>
<Editor.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Editor.Keyboard>
</Editor>
Ekvivalentní kód jazyka C# je:
var editor = new Editor();
editor.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);
Povolení a zakázání kontroly pravopisu
Vlastnost IsSpellCheckEnabled
určuje, jestli je povolená kontrola pravopisu. Ve výchozím nastavení je vlastnost nastavena na true
. Když uživatel zadá text, označí se chybně napsané texty.
U některých scénářů zadávání textu, jako je zadání uživatelského jména, ale kontrola pravopisu poskytuje negativní prostředí, a proto by měla být zakázána nastavením IsSpellCheckEnabled
vlastnosti na false
:
<Editor ... IsSpellCheckEnabled="false" />
var editor = new Editor { ... IsSpellCheckEnabled = false };
Poznámka:
IsSpellCheckEnabled
Pokud je vlastnost nastavena na false
a vlastní klávesnice se nepoužívá, nativní kontrola pravopisu bude zakázána. Pokud Keyboard
je však nastavena sada, která zakáže kontrolu pravopisu, například Keyboard.Chat
, IsSpellCheckEnabled
vlastnost je ignorována. Vlastnost proto nelze použít k povolení kontroly pravopisu Keyboard
, která ji explicitně zakáže.
Povolení a zakázání predikce textu
Vlastnost IsTextPredictionEnabled
určuje, zda je povolena predikce textu a automatická oprava textu. Ve výchozím nastavení je vlastnost nastavena na true
. Když uživatel zadá text, zobrazí se predikce slov.
U některých scénářů zadávání textu, jako je například zadání uživatelského jména, předpovědi textu a automatické opravy textu, ale může být negativní 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:
Pokud je vlastnost nastavená IsTextPredictionEnabled
na false
hodnotu a nepoužívá se vlastní klávesnice, je zakázána predikce textu a automatická oprava textu. Pokud Keyboard
je však nastavena sada, která zakáže predikci textu, IsTextPredictionEnabled
vlastnost bude ignorována. Vlastnost proto nelze použít k povolení predikce textu pro Keyboard
objekt, který ji explicitně zakáže.
Barvy
Editor
lze nastavit tak, aby používala vlastní barvu pozadí prostřednictvím BackgroundColor
vlastnosti. Zvláštní péče je nezbytná k zajištění toho, aby barvy byly použitelné na každé platformě. Vzhledem k tomu, že každá platforma má jiné výchozí hodnoty pro barvu textu, možná budete muset pro každou platformu nastavit vlastní barvu pozadí. Další informace o optimalizaci uživatelského rozhraní pro každou platformu najdete v tématu Práce s úpravami platformy.
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 nezakrývají žádný zástupný text.
Události a interaktivita
Editor
zveřejňuje dvě události:
- TextChanged – vyvolán při změně textu v editoru. Poskytuje text před a po změně.
- Dokončeno – vyvolána při ukončení vstupu uživatele stisknutím klávesy Return na klávesnici.
Poznámka:
Třída VisualElement
, ze které Entry
dědí, má Focused
Unfocused
a události.
Dokončeno
Událost Completed
se používá k reakci na dokončení interakce s objektem Editor
. Completed
je vyvolána, když uživatel ukončí vstup s polem zadáním návratové klávesy na klávesnici (nebo stisknutím klávesy Tab v UPW). Obslužná rutina události je obecná obslužná rutina události, která přebírá 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čená událost se dá přihlásit k odběru 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 každé Text
Editor
změně. Obslužná rutina události přebírá instanci TextChangedEventArgs
. TextChangedEventArgs
poskytuje přístup ke starým a novým hodnotám Editor
Text
prostřednictvím OldTextValue
a NewTextValue
vlastností:
void EditorTextChanged (object sender, TextChangedEventArgs e)
{
var oldText = e.OldTextValue;
var newText = e.NewTextValue;
}
Dokončená událost se dá přihlásit k odběru 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>