Android TabLayout в нижней части экрана
У меня есть этот сгенерированный XML-код, когда я начал новое действие с вкладками:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="eis1617.muellerkimmeyer.app.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
Как именно я должен изменить его, чтобы панель вкладок была размещена в нижней части экрана? На тэг TabLayout я уже пытался добавить android: layout_gravity= "bottom" , но это ничего не изменило.
2 ответа:
Вот как я этого добился:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="in.mylo.pregnancy.baby.app.FAB"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@android:color/white" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPagerHome" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/bottomNavigation" /> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="@android:color/white" android:elevation="80dp"> <android.support.design.widget.TabLayout android:id="@+id/bottomNavigation" android:layout_width="match_parent" android:layout_height="56dp" android:clickable="true" app:tabBackground="?attr/selectableItemBackground" app:tabGravity="fill" app:tabIndicatorHeight="0dp" app:tabMode="fixed" app:tabSelectedTextColor="@android:color/black" /> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
Макет Закладка не меню использовать, вместо того, чтобы добавить новый материал нижней навигации
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.view.ViewPager android:id="@+id/viewpagerhome" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:itemBackground="@color/colorPrimaryDark" app:itemIconTint="@drawable/menucolor" app:itemTextColor="@drawable/menucolor" app:menu="@menu/bottommenu"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/bottom_navigation" android:layout_alignParentRight="true" app:srcCompat="@android:drawable/ic_dialog_email" android:layout_marginTop="@dimen/fab_margin" android:layout_marginBottom="@dimen/fab_margin" /> </RelativeLayout> </android.support.design.widget.CoordinatorLayout>
Меню, которое будет использоваться в нижней части поскольку его нижнее меню, его требуется меню, чтобы быть раздутым
<?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/action_order" android:enabled="true" android:icon="@drawable/orders" android:title="My Orders" app:showAsAction="ifRoom" /> <item android:id="@+id/action_account" android:enabled="true" android:icon="@drawable/account" android:title="My Account" app:showAsAction="ifRoom" /> <item android:id="@+id/action_logout" android:enabled="true" android:icon="@drawable/account" android:title="Logout" app:showAsAction="ifRoom" /> </menu>
В вашем классе активности инициализируйте свое объявите свое нижнее меню и реализуйте listner,
BottomNavigationView bottomNavigationView; bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_navigation); bottomNavigationView.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.action_order: // your fragment or activity code here break; case R.id.action_account: // your fragment or activity code here break; case R.id.action_logout: break; } return false; } }); }
Готово! Надеюсь, это поможет.