您好,登錄后才能下訂單哦!
關于標簽是否應該放在屏幕頂部或底部的爭論已經持續了近十年。Android總是偏愛在頁面頂部使用選項卡作為過濾機制,而iOS則使用底部標簽作為導航的主要來源。現在,在支持設計庫中添加了底部導航視圖,Android開發者可以選擇他們的應用程序的主要導航來。
底部導航條使您的用戶可以輕松地通過一個水龍頭瀏覽頂級視圖,比較了從側面飛出的導航抽屜,當一個應用程序有很多不同的部分時,它是一個標準。今天,我將在您的應用程序中最好使用底部導航,如何實現它,以及如何根據您的喜好定制它。
底層導航的核心體驗是專為手機設備使用的,它允許用戶輕松地在頁面之間進行交換。如果你使用底部導航應該注意的一些問題是:
你的應用程序有3到5個頂層頁面嗎?
你的頂層頁面需要直接訪問嗎?
如果你的應用程序有超過五頁,最好和導航抽屜在一起;如果少于三頁,堅持標準的頂部標簽。
開始新的底部導航視圖, 我們要確保我們的Android應用程序的更新了 AppCompat Activity 并且更新到 最新的支持庫。 有了這些,我們現在可以通過NuGet包(當前版本是25.3.3)來安裝Xamarin.Android.Support.Design到我們的應用工程中。
我們必須定義的項目,將在我們添加到bottomnavigationview控制后顯示。這是控制同樣的navigationdrawer,使用XML定義的菜單。我們可以在資源目錄中創建一個新的菜單文件夾,并添加一個新的XML文件。我們在Resources/menu/下創建一個bottom_navigation_main.xml文件,并且從Android Asset Studio下載一個選項卡的圖標,大小都是24dpX24dp.
點擊(此處)折疊或打開
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_home"
android:enabled="true"
android:icon="@drawable/ic_action_home"
android:title="@string/tab1_title"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_audio"
android:enabled="true"
android:icon="@drawable/ic_action_audiotrack"
android:title="@string/tab2_title"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_video"
android:enabled="true"
android:icon="@drawable/ic_action_videocam"
android:title="@string/tab3_title"
app:showAsAction="ifRoom" />
</menu>
底部導航工作時,選擇一個項目時替換碎片。這意味著我們的Android的XML也應該有一個FrameLayout交換和碎片,將顯示。我們的XML將以其基本形式看起來像這樣:
點擊(此處)折疊或打開
<RelativeLayout
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">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_navigation"/>
<android.support.design.widget.BottomNavigationView
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" />
<!-- Note: background color is required to get elevation -->
</RelativeLayout>
我們可以定義一個高程,這樣底部導航就可以用漂亮的陰影從頁面上移除,我們在導航視圖中定義我們的條目,菜單屬性引用我們前面創建的菜單。
我們可以看到,默認會自動將我們的主色和灰色的取消項目。
現在是我們實際處理點擊事件并設置內容的時候了。在這個例子中,我有三個不同的片段,它們只是加載一個顯示當前索引的Android XML文件。我們可以創建一個簡單的方法來替換當前的片段,基于我們主活動中的菜單XML中設置的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();
}
現在我們可以加載XML,找到BottomNavigationView,并登記為NavigationItemSelected事件:
點擊(此處)折疊或打開
BottomNavigationView bottomNavigation;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.main);
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
SupportActionBar.SetHomeButtonEnabled(false);
}
bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.bottom_navigation);
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);
}
谷歌的建議是簡單地使用默認的白色或黑色背景顏色和主要色調的圖標,如果你的應用程序使用默認主題,你的工具欄已經著色。如果您希望設置底部導航的顏色,然后建議將當前動作的圖標和文本變為黑色或白色。
There are two additional
properties, 有兩個附加屬性,app:itemIconTint 和 app:itemTextColor,可以設置帽子來處理這個問題。
將它們直接設置為特定的顏色是您可能認為您想要做的事情,但最直接的問題會出現,它還將取消選擇狀態相同的顏色。例如,如果我設置了這三個屬性:
點擊(此處)折疊或打開
android:background="@color/primary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
為了解決這個問題,我們只需要創建一個drawable文件夾選擇器在我們的定義,將基于一個新的XML文件的狀態顏色;我們叫做 nav_item_colors.xml:
點擊(此處)折疊或打開
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@android:color/white" />
<item android:color="#80FFFFFF" />
</selector>
現在,回到我們的BottomNavigationView,我們可以用新的顏色選擇器:
點擊(此處)折疊或打開
android:background="@color/primary"
app:itemIconTint="@drawable/nav_item_colors"
app:itemTextColor="@drawable/nav_item_colors"
絕對可愛!
了解更多關于android底部導航的知識,一定要通過閱讀它的 材料設計指南 來了解所有的“清規戒律”。你也可以從我的GitHub repo你抓取全部樣本以及其它導航的樣品。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。