Har*_*sar -3
\n\n\nGoogle(通过Nick Butcher\xe2\x80\x8f)宣布发布 Android 设计支持库 v25,其中包括新的 BottomNavigationView。
\n
菜单.xml
\n\n在菜单资源文件中定义导航项(Fragments 项)
\n\n<?xml version="1.0" encoding="utf-8"?>\n<menu xmlns:android="http://schemas.android.com/apk/res/android"\nxmlns:app="http://schemas.android.com/apk/res-auto">\n<item\n android:id="@+id/action_item1"\n android:icon="@drawable/icon1"\n android:title="Menu1"\n/>\n<item\n\n android:id="@+id/action_item2"\n android:icon="@drawable/icon2"\n android:title="Menu2"/>\n<item\n android:id="@+id/action_item3"\n android:icon="@drawable/icon3"\n android:title="Menu3" />\n<item\n android:id="@+id/action_item4"\n android:icon="@drawable/icon4"\n android:title="Menu4" />\n\n</menu>\nRun Code Online (Sandbox Code Playgroud)\n\n活动主文件
\n\n将实际添加 BottomNavigationView到布局中。
<RelativeLayout\n android:layout_width="match_parent"\n android:layout_height="match_parent"\n android:orientation="vertical">\n <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:local="http://schemas.android.com/apk/res-auto"\n android:id="@+id/toolbar"\n android:layout_width="match_parent"\n android:layout_height="wrap_content"\n android:minHeight="?attr/actionBarSize"\n android:background="@color/colorPrimary"\n local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"\n local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />\n\n\n <FrameLayout\n android:id="@+id/frame_layout"\n android:layout_width="match_parent"\n android:layout_height="match_parent"\n android:layout_above="@+id/navigation"\n android:layout_below="@id/toolbar"\n android:animateLayoutChanges="true">\n\n </FrameLayout>\n\n <android.support.design.widget.BottomNavigationView\n android:id="@+id/navigation"\n android:layout_width="match_parent"\n android:layout_height="wrap_content"\n android:layout_alignParentBottom="true"\n android:background="@drawable/rbtn_selector"\n android:paddingTop="@dimen/_2sdp"\n app:itemIconTint="@drawable/selector_bottom"\n app:itemTextColor="@drawable/selector_bottom"\n app:elevation="@dimen/_8sdp"\n app:menu="@menu/menu"/>\n\n\n</RelativeLayout>\nRun Code Online (Sandbox Code Playgroud)\n\nMainActivity.java
\n\npublic class MainActivity extends AppCompatActivity {\n\n bottomNavigationView = (BottomNavigationView)findViewById(R.id.navigation);\n\n //If you want to remove slide animation of bottomview with Helper Class \n\n BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);\n Menu m = bottomNavigationView.getMenu();\n\n\n bottomNavigationView.setOnNavigationItemSelectedListener\n (new BottomNavigationView.OnNavigationItemSelectedListener() {\n @Override\n public boolean onNavigationItemSelected(@NonNull MenuItem item) {\n\n\n if (getSupportActionBar() != null){\n getSupportActionBar().setDisplayHomeAsUpEnabled(false);\n getSupportActionBar().setHomeButtonEnabled(false);\n }\n\n\n\n android.app.Fragment selectedFragment = null;\n switch (item.getItemId()) {\n case R.id.action_item1:\n selectedFragment = Fragment1.newInstance();\n toolbar.setTitle("Fragment1");\n break;\n case R.id.action_item2:\n selectedFragment = Fragment2.newInstance();\n toolbar.setTitle("Fragment2");\n break;\n case R.id.action_item3:\n selectedFragment = Fragment3.newInstance();\n toolbar.setTitle("Fragment3");\n break;\n case R.id.action_item4:\n selectedFragment = Fragment4.newInstance();\n toolbar.setTitle("Fragment4");\n break;\n default:\n selectedFragment = Fragment1.newInstance();\n toolbar.setTitle("Fragment1");\n break;\n\n }\n android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();\n transaction.replace(R.id.frame_layout, selectedFragment);\n transaction.commit();\n return true;\n }\n });\n\n //Manually displaying the first fragment - one time only\n\n\n\n android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();\n transaction.replace(R.id.frame_layout, Fragment1.newInstance());\n transaction.commit();\n\n }\nRun Code Online (Sandbox Code Playgroud)\n\n此辅助类用于删除移动动画
\n\nstatic class BottomNavigationViewHelper {\n\n public static void removeShiftMode(BottomNavigationView view) {\n BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);\n try {\n Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");\n shiftingMode.setAccessible(true);\n shiftingMode.setBoolean(menuView, false);\n shiftingMode.setAccessible(false);\n for (int i = 0; i < menuView.getChildCount(); i++) {\n BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);\n item.setShiftingMode(false);\n // set once again checked value, so view will be updated\n item.setChecked(item.getItemData().isChecked());\n }\n } catch (NoSuchFieldException e) {\n Log.e("ERROR NO SUCH FIELD", "Unable to get shift mode field");\n } catch (IllegalAccessException e) {\n Log.e("ERROR ILLEGAL ALG", "Unable to change value of shift mode");\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n每个 Fragment 作为一个菜单项 **Fragmen1.java**
public class Fragmen1 extends android.app.Fragment {\n\npublic static Fragmen1 newInstance() {\n Fragmen1 fragment = new Fragmen1();\n return fragment;\n}\n @Override\npublic void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setHasOptionsMenu(true);\n}\n\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |