在我的跨平臺 Xamarin Forms 應用程式中,特別是在 Android 上,我希望能夠自定義Xamarin.Forms.TabbedPage. 特別是,我希望能夠將欄中重點專案的背景從純淺灰色裁剪圓(見下圖)更改為不同的形狀,例如綠色矩形框(實際形狀并不重要)。
我知道如何根據狀態更改專案的背景,我的問題是我找不到我需要修改哪種樣式或類似樣式來更改TabbedPage.
通常,對于 Xamarin Forms 應用程式的 Android 應用程式專案,Tabbar.axml檔案包含在Resources/Layout檔案夾中,但我在此檔案中所做的任何更改似乎都不適用于導航選項卡的外觀。例如,我嘗試添加以下行:
app:tabBackground="@drawable/background_states"
但我看不到任何跡象表明我的更改已被應用。
我還嘗試更一般地確定要覆寫的 Android 樣式,但無濟于事。
任何人都可以在正確的方向上推動我解決我的問題嗎?

uj5u.com熱心網友回復:
由于標簽欄位于頁面底部,因此該欄由BottomNavigationView. 因此,我需要通過自定義TabbedPage渲染器應用所需的背景樣式。
在渲染器中,覆寫OnElementChanged如下:
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (e.NewElement == null) return;
// Identify first (only) bottom navigation view in collection of element children.
var bottomNavigationView = GetBottomNavigationView(ViewGroup);
// Apply a custom border style for the item background.
bottomNavigationView.ItemBackground =
Resources?.GetDrawable(Resource.Drawable.background_states, Context?.Theme);
}
whereGetBottomNavigationView是一種遍歷元素子元素樹的方法,需要單獨實作(為簡潔起見,此處省略)。drawable 資源background_states是用于根據狀態應用不同背景的選擇器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325242.html
標籤:安卓 沙马林 xamarin.forms 重点
