日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
android底部導(dǎo)航欄切換方式有哪些
Android底部導(dǎo)航欄的切換方式有很多種,其中一種是使用ViewPager+Fragment+RadioGroup的方式。這種方式每次點(diǎn)擊我們都要重置所有TextView的狀態(tài),然后選中點(diǎn)擊的TextView。

底部導(dǎo)航欄切換方式簡(jiǎn)介

底部導(dǎo)航欄(Bottom Navigation Bar)是一種常見(jiàn)的導(dǎo)航方式,它位于應(yīng)用界面的底部,用戶(hù)可以通過(guò)點(diǎn)擊不同的標(biāo)簽來(lái)實(shí)現(xiàn)頁(yè)面之間的切換,在Android開(kāi)發(fā)中,底部導(dǎo)航欄的使用非常廣泛,下面我們將詳細(xì)介紹幾種常見(jiàn)的底部導(dǎo)航欄切換方式。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到五龍口網(wǎng)站設(shè)計(jì)與五龍口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋五龍口地區(qū)。

使用ViewPager2實(shí)現(xiàn)底部導(dǎo)航欄切換

1、添加依賴(lài)

在項(xiàng)目的build.gradle文件中添加ViewPager2的依賴(lài):

dependencies {
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
}

2、創(chuàng)建布局文件

在activity_main.xml布局文件中添加ViewPager2控件:



    

3、創(chuàng)建FragmentPagerAdapter和Fragment類(lèi)

創(chuàng)建一個(gè)繼承自FragmentStateAdapter的FragmentPagerAdapter類(lèi):

public class MainFragmentPagerAdapter extends FragmentStateAdapter {
    private List fragmentList;
    private List fragmentTitleList;
    public MainFragmentPagerAdapter(@NonNull FragmentManager manager, int resourceId, @NonNull List fragments, @NonNull List titles) {
        super(manager, resourceId);
        this.fragmentList = fragments;
        this.fragmentTitleList = titles;
    }
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return fragmentList.get(position);
    }
    @Override
    public int getItemCount() {
        return fragmentList.size();
    }
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentTitleList.get(position);
    }
}

創(chuàng)建對(duì)應(yīng)的Fragment類(lèi),例如HomeFragment、ProfileFragment等。

4、在Activity中設(shè)置ViewPager2和Adapter

public class MainActivity extends AppCompatActivity {
    private ViewPager2 viewPager;
    private MainFragmentPagerAdapter adapter;
    ListView listView; // 需要隱藏的ListView,用于顯示選中的標(biāo)簽背景色和文字顏色等樣式信息,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    TextView tvCurrentPage; // 需要隱藏的TextView,用于顯示當(dāng)前選中的標(biāo)簽頁(yè)索引,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    ImageView imgSelectedTab; // 需要隱藏的ImageView,用于顯示選中的標(biāo)簽的圖標(biāo),具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    LinearLayout tabContainer; // 需要隱藏的LinearLayout,用于容納所有的底部標(biāo)簽,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int currentIndex = 0; // 標(biāo)簽頁(yè)的當(dāng)前索引,初始值為0,表示首頁(yè),可以根據(jù)需要進(jìn)行修改,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int selectedColor = Color.BLUE; // 標(biāo)簽頁(yè)被選中時(shí)的背景色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int unselectedColor = Color.GRAY; // 標(biāo)簽頁(yè)未被選中時(shí)的背景色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textColorPrimary = Color.WHITE; // 標(biāo)簽頁(yè)的文字顏色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textSizePrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_primary)); // 標(biāo)簽頁(yè)的文字大小,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textColorSecondary = Color.BLACK; // 標(biāo)簽頁(yè)被選中時(shí)的字體顏色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textSizeSecondary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_secondary)); // 標(biāo)簽頁(yè)被選中時(shí)的字體大小,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textColorUnselected = Color.BLACK; // 標(biāo)簽頁(yè)未被選中時(shí)的字體顏色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textSizeUnselected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_unselected)); // 標(biāo)簽頁(yè)未被選中時(shí)的字體大小,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textColorSelected = Color.WHITE; // 標(biāo)簽頁(yè)被選中時(shí)的字體顏色,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼,注意,這里與textColorSecondary相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的顏色是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textSizeSelected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_selected)); // 標(biāo)簽頁(yè)被選中時(shí)的字體大小,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼,注意,這里與textSizeSecondary相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的字體大小是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的代碼。
    int textMarginPrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_margin_primary)); // 標(biāo)簽頁(yè)的文字外邊距,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginSecondary相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginUnselected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginSelected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginUnselected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginSelected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginUnselected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginSelected相同,是因?yàn)檫x中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡(jiǎn)化代碼,具體實(shí)現(xiàn)請(qǐng)參考下面的 code,注意,這里與textMarginUnselected相同,是因?yàn)檫x中狀態(tài)和未選中 state

本文標(biāo)題:android底部導(dǎo)航欄切換方式有哪些
標(biāo)題URL:http://m.5511xx.com/article/codecdp.html