關(guān)于標(biāo)簽是否應(yīng)該放在屏幕頂部或底部的爭論已經(jīng)持續(xù)了近十年。Android總是偏愛在頁面頂部使用選項卡作為過濾機制,而iOS則使用底部標(biāo)簽作為導(dǎo)航的主要來源?,F(xiàn)在,在支持設(shè)計庫中添加了底部導(dǎo)航視圖,Android開發(fā)者可以選擇他們的應(yīng)用程序的主要導(dǎo)航來。
站在用戶的角度思考問題,與客戶深入溝通,找到盤州網(wǎng)站設(shè)計與盤州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋盤州地區(qū)。
底部導(dǎo)航條使您的用戶可以輕松地通過一個水龍頭瀏覽頂級視圖,比較了從側(cè)面飛出的導(dǎo)航抽屜,當(dāng)一個應(yīng)用程序有很多不同的部分時,它是一個標(biāo)準(zhǔn)。今天,我將在您的應(yīng)用程序中最好使用底部導(dǎo)航,如何實現(xiàn)它,以及如何根據(jù)您的喜好定制它。
底層導(dǎo)航的核心體驗是專為手機設(shè)備使用的,它允許用戶輕松地在頁面之間進行交換。如果你使用底部導(dǎo)航應(yīng)該注意的一些問題是:
你的應(yīng)用程序有3到5個頂層頁面嗎?
你的頂層頁面需要直接訪問嗎?
如果你的應(yīng)用程序有超過五頁,最好和導(dǎo)航抽屜在一起;如果少于三頁,堅持標(biāo)準(zhǔn)的頂部標(biāo)簽。
開始新的底部導(dǎo)航視圖, 我們要確保我們的Android應(yīng)用程序的更新了 AppCompat Activity 并且更新到 最新的支持庫。 有了這些,我們現(xiàn)在可以通過NuGet包(當(dāng)前版本是25.3.3)來安裝Xamarin.Android.Support.Design到我們的應(yīng)用工程中。
我們必須定義的項目,將在我們添加到bottomnavigationview控制后顯示。這是控制同樣的navigationdrawer,使用XML定義的菜單。我們可以在資源目錄中創(chuàng)建一個新的菜單文件夾,并添加一個新的XML文件。我們在Resources/menu/下創(chuàng)建一個bottom_navigation_main.xml文件,并且從Android Asset Studio下載一個選項卡的圖標(biāo),大小都是24dpX24dp.
點擊(此處)折疊或打開
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/menu_home"
android:enabled="true"
android:icon="@drawable/ic_action_home"
android:title="@string/tab1_title"
app:showAsAction="ifRoom" />
android:id="@+id/menu_audio"
android:enabled="true"
android:icon="@drawable/ic_action_audiotrack"
android:title="@string/tab2_title"
app:showAsAction="ifRoom" />
android:id="@+id/menu_video"
android:enabled="true"
android:icon="@drawable/ic_action_videocam"
android:title="@string/tab3_title"
app:showAsAction="ifRoom" />
底部導(dǎo)航工作時,選擇一個項目時替換碎片。這意味著我們的Android的XML也應(yīng)該有一個FrameLayout交換和碎片,將顯示。我們的XML將以其基本形式看起來像這樣:
點擊(此處)折疊或打開
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_navigation"/>
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_gravity="start"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
app:elevation="16dp"
app:menu="@menu/bottom_navigation_main" />
我們可以定義一個高程,這樣底部導(dǎo)航就可以用漂亮的陰影從頁面上移除,我們在導(dǎo)航視圖中定義我們的條目,菜單屬性引用我們前面創(chuàng)建的菜單。
我們可以看到,默認(rèn)會自動將我們的主色和灰色的取消項目。
現(xiàn)在是我們實際處理點擊事件并設(shè)置內(nèi)容的時候了。在這個例子中,我有三個不同的片段,它們只是加載一個顯示當(dāng)前索引的Android XML文件。我們可以創(chuàng)建一個簡單的方法來替換當(dāng)前的片段,基于我們主活動中的菜單XML中設(shè)置的ID:
點擊(此處)折疊或打開
void LoadFragment(int id)
{
Android.Support.V4.App.Fragment fragment = null;
switch (id)
{
case Resource.Id.menu_home:
fragment = Fragment1.NewInstance();
break;
case Resource.Id.menu_audio:
fragment = Fragment2.NewInstance();
break;
case Resource.Id.menu_video:
fragment = Fragment3.NewInstance();
break;
}
if (fragment == null)
return;
SupportFragmentManager.BeginTransaction()
.Replace(Resource.Id.content_frame, fragment)
.Commit();
}
現(xiàn)在我們可以加載XML,找到BottomNavigationView,并登記為NavigationItemSelected事件:
點擊(此處)折疊或打開
BottomNavigationView bottomNavigation;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.main);
var toolbar = FindViewById
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
SupportActionBar.SetHomeButtonEnabled(false);
}
bottomNavigation = FindViewById
bottomNavigation.NavigationItemSelected += BottomNavigation_NavigationItemSelected;
// Load the first fragment on creation
LoadFragment(Resource.Id.menu_home);
}
private void BottomNavigation_NavigationItemSelected(object sender, BottomNavigationView.NavigationItemSelectedEventArgs e)
{
LoadFragment(e.Item.ItemId);
}
谷歌的建議是簡單地使用默認(rèn)的白色或黑色背景顏色和主要色調(diào)的圖標(biāo),如果你的應(yīng)用程序使用默認(rèn)主題,你的工具欄已經(jīng)著色。如果您希望設(shè)置底部導(dǎo)航的顏色,然后建議將當(dāng)前動作的圖標(biāo)和文本變?yōu)楹谏虬咨? There are two additional
properties, 有兩個附加屬性,app:itemIconTint 和 app:itemTextColor,可以設(shè)置帽子來處理這個問題。
將它們直接設(shè)置為特定的顏色是您可能認(rèn)為您想要做的事情,但最直接的問題會出現(xiàn),它還將取消選擇狀態(tài)相同的顏色。例如,如果我設(shè)置了這三個屬性:
點擊(此處)折疊或打開
android:background="@color/primary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
為了解決這個問題,我們只需要創(chuàng)建一個drawable文件夾選擇器在我們的定義,將基于一個新的XML文件的狀態(tài)顏色;我們叫做 nav_item_colors.xml:
點擊(此處)折疊或打開
現(xiàn)在,回到我們的BottomNavigationView,我們可以用新的顏色選擇器:
點擊(此處)折疊或打開
android:background="@color/primary"
app:itemIconTint="@drawable/nav_item_colors"
app:itemTextColor="@drawable/nav_item_colors"
絕對可愛!
了解更多關(guān)于android底部導(dǎo)航的知識,一定要通過閱讀它的 材料設(shè)計指南 來了解所有的“清規(guī)戒律”。你也可以從我的GitHub repo你抓取全部樣本以及其它導(dǎo)航的樣品。