新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
android底部導航欄切換方式有哪些
Android底部導航欄的切換方式有很多種,其中一種是使用ViewPager+Fragment+RadioGroup的方式。這種方式每次點擊我們都要重置所有TextView的狀態(tài),然后選中點擊的TextView。
底部導航欄切換方式簡介
底部導航欄(Bottom Navigation Bar)是一種常見的導航方式,它位于應用界面的底部,用戶可以通過點擊不同的標簽來實現頁面之間的切換,在Android開發(fā)中,底部導航欄的使用非常廣泛,下面我們將詳細介紹幾種常見的底部導航欄切換方式。

站在用戶的角度思考問題,與客戶深入溝通,找到五龍口網站設計與五龍口網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站制作、成都網站建設、外貿營銷網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋五龍口地區(qū)。
使用ViewPager2實現底部導航欄切換
1、添加依賴
在項目的build.gradle文件中添加ViewPager2的依賴:
dependencies {
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
2、創(chuàng)建布局文件
在activity_main.xml布局文件中添加ViewPager2控件:
3、創(chuàng)建FragmentPagerAdapter和Fragment類
創(chuàng)建一個繼承自FragmentStateAdapter的FragmentPagerAdapter類:
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)建對應的Fragment類,例如HomeFragment、ProfileFragment等。
4、在Activity中設置ViewPager2和Adapter
public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager;
private MainFragmentPagerAdapter adapter;
ListView listView; // 需要隱藏的ListView,用于顯示選中的標簽背景色和文字顏色等樣式信息,具體實現請參考下面的代碼。
TextView tvCurrentPage; // 需要隱藏的TextView,用于顯示當前選中的標簽頁索引,具體實現請參考下面的代碼。
ImageView imgSelectedTab; // 需要隱藏的ImageView,用于顯示選中的標簽的圖標,具體實現請參考下面的代碼。
LinearLayout tabContainer; // 需要隱藏的LinearLayout,用于容納所有的底部標簽,具體實現請參考下面的代碼。
int currentIndex = 0; // 標簽頁的當前索引,初始值為0,表示首頁,可以根據需要進行修改,具體實現請參考下面的代碼。
int selectedColor = Color.BLUE; // 標簽頁被選中時的背景色,具體實現請參考下面的代碼。
int unselectedColor = Color.GRAY; // 標簽頁未被選中時的背景色,具體實現請參考下面的代碼。
int textColorPrimary = Color.WHITE; // 標簽頁的文字顏色,具體實現請參考下面的代碼。
int textSizePrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_primary)); // 標簽頁的文字大小,具體實現請參考下面的代碼。
int textColorSecondary = Color.BLACK; // 標簽頁被選中時的字體顏色,具體實現請參考下面的代碼。
int textSizeSecondary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_secondary)); // 標簽頁被選中時的字體大小,具體實現請參考下面的代碼。
int textColorUnselected = Color.BLACK; // 標簽頁未被選中時的字體顏色,具體實現請參考下面的代碼。
int textSizeUnselected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_unselected)); // 標簽頁未被選中時的字體大小,具體實現請參考下面的代碼。
int textColorSelected = Color.WHITE; // 標簽頁被選中時的字體顏色,具體實現請參考下面的代碼,注意,這里與textColorSecondary相同,是因為選中狀態(tài)和未選中狀態(tài)的顏色是一樣的,這樣可以簡化代碼,具體實現請參考下面的代碼。
int textSizeSelected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_selected)); // 標簽頁被選中時的字體大小,具體實現請參考下面的代碼,注意,這里與textSizeSecondary相同,是因為選中狀態(tài)和未選中狀態(tài)的字體大小是一樣的,這樣可以簡化代碼,具體實現請參考下面的代碼。
int textMarginPrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_margin_primary)); // 標簽頁的文字外邊距,具體實現請參考下面的 code,注意,這里與textMarginSecondary相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginUnselected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginSelected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginUnselected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginSelected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginUnselected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginSelected相同,是因為選中狀態(tài)和未選中狀態(tài)的文字外邊距是一樣的,這樣可以簡化代碼,具體實現請參考下面的 code,注意,這里與textMarginUnselected相同,是因為選中狀態(tài)和未選中 state
新聞名稱:android底部導航欄切換方式有哪些
路徑分享:http://m.fisionsoft.com.cn/article/codecdp.html


咨詢
建站咨詢
