Android編程入門--BottomNavigationView+ViewPager

來源:互聯網
上載者:User

標籤:lstat   imp   com   UI   使用方法   get   listener   win   android   

參考部落格:Android (爭取做到)最全的底部導覽列實現方法

Bottom Navigation是5.0(API level 21)新出的一種符合MD規範的導覽列規範。

規範參考:Android Bottom navigation 規範一:使用方法

3個比較火的開源庫,GitHub - aurelhubert/ahbottomnavigation,GitHub - roughike/BottomBar, Ashok-Varma/BottomNavigation

ashokvarma 參考部落格:Android學習之BottomNavigationBar實現Android特色底部導覽列

或參考部落格:Android底部導航BottomNavigationBar

 

BottomNavigationView+ViewPager+Fragment布局方式

ViewPagerAdapter:

package com.zyp.energy.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import java.util.ArrayList;import java.util.List;public class ViewPagerAdapter extends FragmentPagerAdapter {    private final List<Fragment> mFragmentList = new ArrayList<>();    public ViewPagerAdapter(FragmentManager manager) {        super(manager);    }    @Override    public Fragment getItem(int position) {        return mFragmentList.get(position);    }    @Override    public int getCount() {        return mFragmentList.size();    }    public void addFragment(Fragment fragment) {        mFragmentList.add(fragment);    }}
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());        adapter.addFragment(HomeFragment.newInstance());        adapter.addFragment(NotifyFragment.newInstance());        adapter.addFragment(SettingFragment.newInstance());        mViewPager.setAdapter(adapter);

 

布局:

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 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:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/activity_background"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="com.zyp.energy.ui.activity.MainActivity"    tools:showIn="@layout/activity_main">    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent" /></android.support.constraint.ConstraintLayout>
    <include layout="@layout/content_main" />    <android.support.design.widget.BottomNavigationView        android:id="@+id/navigation"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="bottom"        android:background="?android:attr/windowBackground"        app:menu="@menu/navigation" />

事件代碼:

    private ViewPager.OnPageChangeListener mOnPageChangeListener = 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 {                mNavigationView.getMenu().getItem(0).setChecked(false);            }            menuItem = mNavigationView.getMenu().getItem(position);            menuItem.setChecked(true);        }        @Override        public void onPageScrollStateChanged(int state) {        }    };    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener            = new BottomNavigationView.OnNavigationItemSelectedListener() {        @Override        public boolean onNavigationItemSelected(@NonNull MenuItem item) {            switch (item.getItemId()) {                case R.id.navigation_home:                    mViewPager.setCurrentItem(0);                    return true;                case R.id.navigation_notifications:                    mViewPager.setCurrentItem(1);                    return true;                case R.id.navigation_setting:                    mViewPager.setCurrentItem(2);                    return true;            }            return false;        }    };

 

Android編程入門--BottomNavigationView+ViewPager

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.