XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2017/01/28

Xamarin FAQ 1-27 : 不同系統平台下,導航頁面的返回按鈕文字問題

問題

在進行跨平台應用程式開發的時候,需要面臨到使用一套UI定義,便能夠在不同作業系統下來執行;不過,由於 Xamarin.Forms 採用原生平台控制項來顯示,因此,在 Xamarin.Forms 中同樣的 UI 控制項,可能會在不同作業系統下有著不同的表現。其中,導航工具列就其中一個。導航工具列在不同作業系統下到底呈現樣貌是怎麼樣,有甚麼要特別注意的地方呢?

解答

對於 Xamarin.Forms 中的導航頁面,在各個平台下呈現與操作方式都不太一樣,我們先來看看兩個比較簡單樣貌與操作的平台,那就是 Android & UWP
  • Android
    在下圖,是這個範例應用程式的首頁,由於這是個導航頁面,所以,在最上方有導航工具列。
    在 Android 平台下,第一個頁面的名稱(Title)會出現在左上方,在這個頁面中,我們實作了一個按鈕,當按下了這個按鈕,將會導航到第二個頁面。
    在下圖,為導航到第二個頁面的樣貌,同樣的,這個頁面的名稱(Title)會出現在左上方,不過,在頁面名稱的左邊,有個箭頭,那是回上一頁的按鈕,當您按下這個按鈕,就會回到上一個頁面,也就是上圖的首頁;當然,在 Android 平台下,您也可以使用實體回上一頁按鍵,按下這個按鍵,一樣可以回到上一頁。
  • UWP
    在下圖,是這個範例應用程式的首頁,由於這是個導航頁面,所以,在最上方有導航工具列。
    在 UWP 平台下,第一個頁面的名稱(Title)會出現在左上方,在這個頁面中,我們實作了一個按鈕,當按下了這個按鈕,將會導航到第二個頁面。
    在下圖,為導航到第二個頁面的樣貌,同樣的,這個頁面的名稱(Title)會出現在左上方,然而,在頁面名稱的左邊,並沒有如同 Android 平台的回上一頁箭頭,當您要回到上一個頁面,可以透過 UWP 手機中的實體回上一頁按鍵來回到上一頁。
  • iOS
    最為複雜的 iOS 平台,在 iOS 平台下,導航頁面的首頁如同下圖,該頁面的名稱(Title)是出現在螢幕的最上方的中間區域,,在這個頁面中,我們實作了一個按鈕,當按下了這個按鈕,將會導航到第二個頁面。
    預設來說,第二頁如同下圖,新頁面名稱依舊出現在螢幕最上方的中間區域,而在螢幕左上方,會如同 Android 平台,會有個回上一頁按鈕並緊接著上一頁的頁面名稱;不過,在這裡,您看到的是 < Back這樣的內容,會出現這樣是因為上一頁頁面名稱的文字過長,無法在完全顯示出來,因此,就會顯示 < Back 。
    像這樣的問題,可以有兩種解法,首先,就是要縮點第一個頁面名稱的長度,使其不會因為名稱文字過長,導致顯示不出來;在下圖中,我們將頁面名稱修改成為 多奇數位創意 ,僅僅六個中文字,這樣就可以在第二頁出現了首頁頁面的名稱。
    經過調整首頁頁面名稱長度僅有六個中文字,這樣,在第二頁面就會顯示如下圖。
    這樣做也是可能會遇到問題,那就是每支手機的螢幕解析度與尺寸規格都不盡相同,有時候六個中文字在 A 手機上可以完全顯示出來,可以在 B 裝置上可能會有無法顯示地問提。
    第二種作法則是比較安全的作法,那就是自行指定回上一頁按鈕文字的名稱,在這裡,我們希望第二頁的回上一頁文字要顯示 回去了,此時,您需要在第一個頁面,也就是首頁,的頁面建構式內,使用這個方法 NavigationPage.SetBackButtonTitle(this, "回去了");,便可以設定第二頁的回上一頁按鈕文字。

沒有留言:

張貼留言