天天看點

第十五章:互動式界面(九)

選擇鍵盤

Entry和Editor與SearchBar的不同之處在于它們都來自InputView。 有趣的是,盡管Entry和Editor定義了類似的屬性和事件,但InputView隻定義了一個屬性:Keyboard。 此屬性允許程式選擇顯示的鍵盤類型。 例如,用于鍵入URL的鍵盤應該與用于輸入電話号碼的鍵盤不同。 所有三個平台都有各種風格的虛拟鍵盤,适用于不同類型的文本輸入。 程式無法選擇用于SearchBar的鍵盤。

此Keyboard屬性是Keyboard類型,該類定義了适用于不同鍵盤用途的鍵盤類型的七個靜态隻讀屬性:

  • Default
  • Text
  • Chat
  • Url
  • Email
  • 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>           

占位符顯示為灰色文本。 以下是程式首次開始運作時顯示的外觀:

第十五章:互動式界面(九)

與Slider一樣,除非您還設定了WidthRequest屬性,否則不希望在Entry,Left,Center或Right上設定Horizo​​ntalOptions。如果這樣做,條目将折疊到非常小的寬度。它仍然可以使用 - Entry自動提供比Entry可以顯示更長的文本的水準滾動 - 但你應該真的嘗試提供足夠的大小。在此程式中,每個條目都與螢幕一樣寬,減去左右兩側的10個機關填充。

您可以通過不同文本長度的實驗來估計足夠的WidthRequest。本章的下一個程式将Entry寬度設定為等于1英寸的值。

EntryKeyboards程式使用通過隐式樣式設定的CenterOndExpand的VerticalOptions值,垂直均勻地分隔七個Entry視圖。顯然,所有七個Entry視圖都有足夠的垂直空間,是以您可能會對在XAML檔案中使用ScrollView感到困惑。

ScrollView專門針對iOS。如果您點選靠近Android或Windows 10 Mobile螢幕底部的條目,作業系統将在鍵盤彈出時自動向上移動頁面内容,是以在您鍵入時仍可看到條目。但除非提供ScrollView,否則iOS不會這樣做。

以下是在螢幕底部的一個Entry視圖中鍵入文本時每個螢幕的外觀:

第十五章:互動式界面(九)

繼續閱讀