選擇鍵盤
Entry和Editor與SearchBar的不同之處在于它們都來自InputView。 有趣的是,盡管Entry和Editor定義了類似的屬性和事件,但InputView隻定義了一個屬性:Keyboard。 此屬性允許程式選擇顯示的鍵盤類型。 例如,用于鍵入URL的鍵盤應該與用于輸入電話号碼的鍵盤不同。 所有三個平台都有各種風格的虛拟鍵盤,适用于不同類型的文本輸入。 程式無法選擇用于SearchBar的鍵盤。
此Keyboard屬性是Keyboard類型,該類定義了适用于不同鍵盤用途的鍵盤類型的七個靜态隻讀屬性:
- Default
- Text
- Chat
- Url
- Telephone
- Numeric
在所有三個平台上,數字鍵盤允許輸入小數點但不允許輸入負号,是以它僅限于正數。
以下程式建立了七個Entry視圖,可讓您了解這三個平台中如何實作這些鍵盤。 附加到每個條目的特定鍵盤由Entry命名為Placeholder定義的屬性辨別。 這是在使用者輸入的任何内容之前出現在條目中的文本,作為程式所期望的文本性質的提示。 占位符文本通常是短語,例如“名字”或“電子郵件位址”:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="EntryKeyboards.EntryKeyboardsPage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="10, 20, 10, 0"
Android="10, 0"
WinPhone="10, 0" />
</ContentPage.Padding>
<ScrollView>
<StackLayout>
<StackLayout.Resources>
<ResourceDictionary>
<Style TargetType="Entry">
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
</Style>
</ResourceDictionary>
</StackLayout.Resources>
<Entry Placeholder="Default"
Keyboard="Default" />
<Entry Placeholder="Text"
Keyboard="Text" />
<Entry Placeholder="Chat"
Keyboard="Chat" />
<Entry Placeholder="Url"
Keyboard="Url" />
<Entry Placeholder="Email"
Keyboard="Email" />
<Entry Placeholder="Telephone"
Keyboard="Telephone" />
<Entry Placeholder="Numeric"
Keyboard="Numeric" />
</StackLayout>
</ScrollView>
</ContentPage>
占位符顯示為灰色文本。 以下是程式首次開始運作時顯示的外觀:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLhJTMmNTM3MGZhNGZwMmZyUmZhJ2Y0kjMwUGM5cDZihTOwEzNhRmM38CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
與Slider一樣,除非您還設定了WidthRequest屬性,否則不希望在Entry,Left,Center或Right上設定HorizontalOptions。如果這樣做,條目将折疊到非常小的寬度。它仍然可以使用 - Entry自動提供比Entry可以顯示更長的文本的水準滾動 - 但你應該真的嘗試提供足夠的大小。在此程式中,每個條目都與螢幕一樣寬,減去左右兩側的10個機關填充。
您可以通過不同文本長度的實驗來估計足夠的WidthRequest。本章的下一個程式将Entry寬度設定為等于1英寸的值。
EntryKeyboards程式使用通過隐式樣式設定的CenterOndExpand的VerticalOptions值,垂直均勻地分隔七個Entry視圖。顯然,所有七個Entry視圖都有足夠的垂直空間,是以您可能會對在XAML檔案中使用ScrollView感到困惑。
ScrollView專門針對iOS。如果您點選靠近Android或Windows 10 Mobile螢幕底部的條目,作業系統将在鍵盤彈出時自動向上移動頁面内容,是以在您鍵入時仍可看到條目。但除非提供ScrollView,否則iOS不會這樣做。
以下是在螢幕底部的一個Entry視圖中鍵入文本時每個螢幕的外觀: