日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 底部导航栏的简单实现-BottomNavigationView

發布時間:2025/3/15 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 底部导航栏的简单实现-BottomNavigationView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在谷歌官方發布BottomNavigationView控件之前我們可以自己組合控件實現,比如LinearLayout + TextView(使用android:drawableTop屬性+selector狀態切換)、RadioGroup + RadioButton等等組合控件的方法自定義實現復雜效果。除了第三方外,現在我們多了一個選擇。

開始

1.新建project然后導入以下support:design library,BottomNavigationView就在這個design庫中。順帶導入這個V4包,因為待會要使用到ViewPager(這里其實不用記這么麻煩的庫跟版本怎么寫,直接在AS 的design面板把控件拖進來就會自動導入了。)

compile 'com.android.support:design:25.0.0' compile'com.android.support:support-v4:25.0.1' 2.在res下新建menu文件夾,新建一個menu菜單,目前最多支持數量為5個( 可以從 BottomNavigationView 源碼中查看: public static final int MAX_ITEM_COUNT = 5; 當超出這個數量時,產生非法參數異常。

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="wrap_content"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/bottom_navigation" /> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#ffffff" app:itemIconTint="@color/selector_icon" app:itemTextColor="@color/selector_icon" app:menu="@menu/menu_bottom_navigation" /> <View android:layout_width="match_parent" android:layout_height="5dp" android:layout_above="@id/bottom_navigation" android:background="@drawable/bottom_shadow" /> </RelativeLayout>

app:itemIconTint="@drawable/bottom_navigation_selector" 為icon著色,寫個selector即可。

app:itemTextColor="@drawable/bottom_navigation_selector"該屬性為文字著色,同樣寫個selector實現點擊顏色切換的效果。

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#757575" android:state_checked="false"/> <item android:color="@color/tab_checked" android:state_checked="true"/> </selector> 4. 寫完布局寫代碼,完整activity文件如下:

public class HomeActivity extends FragmentActivity {private ViewPager viewPager; private BottomNavigationView bottomNavigationView; private MenuItem menuItem; protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_home) BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);//默認 >3 的選中效果會影響ViewPager的滑動切換時的效果,故利用反射去 bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation); viewPager = (ViewPager) findViewById(R.id.viewpager); // bottomNavigationView.enableShiftingMode(true); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.item_news:viewPager.setCurrentItem(0); break; case R.id.item_lib:viewPager.setCurrentItem(1); break; case R.id.item_find:viewPager.setCurrentItem(2); break; case R.id.item_more:viewPager.setCurrentItem(3); break; }return true; }}); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Override public void onPageSelected(int position) {if (menuItem != null) {menuItem.setChecked(false); } else {bottomNavigationView.getMenu().getItem(0).setChecked(false); }menuItem = bottomNavigationView.getMenu().getItem(position); menuItem.setChecked(true); }@Override public void onPageScrollStateChanged(int state) {}}); setupViewPager(viewPager); }private void setupViewPager(ViewPager viewPager) {ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(BaseFragment.newInstance("新聞")); adapter.addFragment(BaseFragment.newInstance("圖書")); adapter.addFragment(BaseFragment.newInstance("發現")); adapter.addFragment(BaseFragment.newInstance("更多")); viewPager.setAdapter(adapter); } } 可以看到BottomNavigationView+ViewPager+Fragment可以實現流行的布局框架


如果不反射改變shiftmode的值得話會左右移動的,效果如下


如果是3個條目的話是不會左右移動的,效果如下



總結

以上是生活随笔為你收集整理的Android 底部导航栏的简单实现-BottomNavigationView的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。