天天看點

第五章:尺寸處理(5)

可通路性問題

EstimatedFontSize程式和FitToSizeClock程式都有一個細微的缺陷,但如果您是衆多不能在移動裝置上輕松閱讀文本并使用該裝置的輔助功能來制作文本的人之一,則問題可能并不那麼細微。 文字較大。

在iOS上,運作設定應用程式,然後選擇“正常”,“輔助功能”和“較大文本”。 然後,您可以使用滑塊使螢幕上的文字變大或變小。 該頁面訓示僅在支援動态類型功能的iOS應用程式中調整文本,

在Android上,運作設定應用,然後選擇顯示然後選擇字型大小。 您将看到四個單選按鈕,用于選擇Small,Normal(預設),Large或Huge。

在Windows 10移動裝置上,運作設定應用,然後選擇輕松通路,然後選擇更多選項。 然後,您可以将标記為文本縮放的滑塊從100%移動到200%。

以下是您将發現的内容:

iOS設定對Xamarin.Forms應用程式沒有影響。

Android設定會影響從Device.GetNamedSize傳回的值。 如果選擇Normal以外的其他東西并再次運作FontSizes程式,則會看到對于NamedSize.Default參數,Device.GetNamedSize在設定為Normal(如前面的螢幕截圖所示)時傳回14,但傳回12 設定為小号,16号為大号,18号為巨型号。

此外,Android螢幕上顯示的所有文本都是不同的大小 - 即使對于恒定的FontSize值,也可以選擇更小或更大的設定,以便根據您選擇的設定進行設定。

在Windows 10 Mobile上,從Device.GetNamedSize傳回的值不依賴于輔助功能設定,但所有文本都顯示得較大。

這意味着EstimatedFontSize或FitToSizeClock程式無法在Anroid或Windows 10 Mobile上正常運作,并具有較大文本的可通路性設定。 部分文本被截斷。

我們再來探讨一下。 AccessibilityTest程式在其頁面上顯示兩個标簽元素。 第一個具有20的常量FontSize,第二個僅在大小更改時顯示第一個Label的大小:

public class AccessibilityTestPage : ContentPage
{
    public AccessibilityTestPage()
    {
        Label testLabel = new Label
        {
            Text = "FontSize of 20" + Environment.NewLine + "20 characters across",
            FontSize = 20,
            HorizontalTextAlignment = TextAlignment.Center,
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.CenterAndExpand
        };
        Label displayLabel = new Label
        {
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.CenterAndExpand
        };
        testLabel.SizeChanged += (sender, args) =>
        {
            displayLabel.Text = String.Format("{0:F0} \u00D7 {1:F0}", testLabel.Width,
                     testLabel.Height);
        };
        Content = new StackLayout
        {
            Children =
                {
                    testLabel,
                    displayLabel
                }
        };
    }
}           

通常,第二個标簽顯示的尺寸與前面所述的假設大緻一緻:

第五章:尺寸處理(5)

但現在進入可通路性設定并将它們一路調高。 Android和Windows 10 Mobile均顯示較大的文字:

第五章:尺寸處理(5)

前面描述的字元大小假設不再有效,這就是程式不适合文本的原因。

但是,還有一種方法可以将文字大小設定為矩形區域。

繼續閱讀