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

歡迎訪問 生活随笔!

生活随笔

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

Android

android底部导航栏下沉,【详细】手把手教你快速实现Android底部导航栏

發布時間:2025/3/15 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android底部导航栏下沉,【详细】手把手教你快速实现Android底部导航栏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 實現底部的Tab,自定義TabContainerView 繼承 RelativeLayout,這是我們最終封裝的View工具類。其內部主要由viewpager和底部的TabHost類組成。

ViewPager初始化contentViewPager = new ViewPager(context);

LayoutParams contentVpLp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

contentVpLp.addRule(RelativeLayout.ABOVE, R.id.divide_tab);

contentViewPager.setLayoutParams(contentVpLp);

contentViewPager.setId(R.id.viewpager_tab);

contentViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { ? ? ? ? ? ?@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

· ? ? ? ? ? ?@Override

public void onPageSelected(int position) {

tabHost.onChangeTabHostStatus(position);

Tab selectedTab = tabHost.getTabForIndex(position); ? ? ? ? ? ? ? ?if (onTabSelectedListener != null && selectedTab != null) onTabSelectedListener.onTabSelected(selectedTab);

}

@Override

public void onPageScrollStateChanged(int state) {

}

});

addView(contentViewPager);底部Tab是一個自定義的橫向布局LinearLayout,動態添加多個寬度等分的Tab按鈕for?(int?i?=?0;?i?

if((i+1)==hasMsgIndex){

hasMsg=true;

}

Tab?tab?=?new?Tab(context,?textArray[i],?textSize,?textColor,?selectedTextColor,drawablePadding,iconWidth,iconHeight,?iconImageArray[i],?selectedIconImageArray[i],?i,hasMsg);

addTab(tab);}tab按鈕的實現rootView?=?new?LinearLayout(context);

childView=new?RelativeLayout(context);

LinearLayout.LayoutParams?rootViewLp?=?new?LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,?ViewGroup.LayoutParams.WRAP_CONTENT);

rootViewLp.weight?=?1;

rootView.setOrientation(LinearLayout.VERTICAL);

rootView.setPadding(0,20,0,20);

rootView.setLayoutParams(rootViewLp);

textTextView?=?new?TextView(context);

iconImageView?=?new?ImageView(context);

/**

*??icon?view

*/

iconImageView.setImageResource(iconImage);

RelativeLayout.LayoutParams?iconParam=new?RelativeLayout.LayoutParams(iconWidth==0??ViewGroup.LayoutParams.WRAP_CONTENT:iconWidth,iconHeight==0??ViewGroup.LayoutParams.WRAP_CONTENT:iconHeight);

iconParam.addRule(RelativeLayout.CENTER_HORIZONTAL);

iconImageView.setLayoutParams(iconParam);

iconImageView.setId(index+1);

childView.addView(iconImageView);

/**

*??text?view

*/

textTextView.setText(text);

textTextView.setTextColor(textColor);

textTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize);

textTextView.setPadding(0,drawablePadding,0,0);

RelativeLayout.LayoutParams?txParam=new?RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,?RelativeLayout.LayoutParams.WRAP_CONTENT);

txParam.addRule(RelativeLayout.BELOW,childView.getChildAt(0).getId());

txParam.addRule(RelativeLayout.CENTER_HORIZONTAL);

textTextView.setLayoutParams(txParam);

childView.addView(textTextView);

if(hasMsg){

ImageView?circleView=new?ImageView(context);

RelativeLayout.LayoutParams?param?=?new?RelativeLayout.LayoutParams(30,30);

param.addRule(RelativeLayout.RIGHT_OF,iconImageView.getId());

circleView.setBackgroundResource(R.drawable.common_red_round);

circleView.setLayoutParams(param);

childView.addView(circleView);

}

RelativeLayout.LayoutParams?childParam=new?RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,?ViewGroup.LayoutParams.MATCH_PARENT);

childView.setLayoutParams(childParam);

rootView.addView(childView);

三、使用方法

布局中引用

android:id="@+id/tab_container"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:tabTextColor="@color/bottom_icon_up"

app:selectedTextColor="@color/common_red"

app:tabTextSize="12sp"

app:drawablePadding="1dp"

app:iconHeight="22dp"

app:iconWidth="22dp"

app:divideLineColor="@color/common_line_two"

app:divideLineHeight="0.3dp"/>ACTIVITY中引用TabContainerView tabContainerView = (TabContainerView) findViewById(R.id.tab_container);

MainViewAdapter mainViewAdapter=new MainViewAdapter(getSupportFragmentManager(),

new Fragment[] {new TabFragment1(), new TabFragment2(),new TabFragment3(), new TabFragment4(),new TabFragment5()});

mainViewAdapter.setHasMsgIndex(5);

tabContainerView.setAdapter(mainViewAdapter);

tabContainerView.setOnTabSelectedListener(new OnTabSelectedListener() {

@Override

public void onTabSelected(Tab tab) {

}

});布局自定義屬性介紹tabTextSize:導航按鈕字體大小

drawablePadding:導航圖片與文字的間距

iconHeight:?導航圖標高度

iconWidth:導航圖標寬度

divideLineColor:導航欄頂部分割線顏色

divideLineHeight:導航欄頂部分割線高度設置消息提醒(導航按鈕旁邊的紅點)setHasMsgIndex(5);?//第五個導航按鈕有消息提醒demo地址:

https://github.com/Louis2014/TabView

打開App,閱讀手記

總結

以上是生活随笔為你收集整理的android底部导航栏下沉,【详细】手把手教你快速实现Android底部导航栏的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一区二区的视频 | 国产精品高潮呻吟久久aⅴ码 | 伊人久操视频 | 射射射综合网 | 久久香蕉国产 | 亚洲黄色网址大全 | 天天爽天天做 | 久综合 | 黄视频网站免费看 | 国产成a人亚洲精v品无码 | 国产不卡在线观看视频 | 男女野外做受全过程 | 国产精品1区2区3区4区 | 日本少妇xxxx | 中文字幕 日韩有码 | 日韩中文字幕观看 | 好屌妞视频这里有精品 | 亚洲一区二区三区电影在线观看 | 欧美日韩一区二区三区在线 | 在线视频午夜 | 男女爽爽视频 | 夜色在线影院 | 日本高清视频免费观看 | 午夜黄色影院 | 中国老熟女重囗味hdxx | 一区二区伦理片 | 2025av在线播放 | 久久久久久久久久网站 | 国产偷人爽久久久久久老妇app | 欧美特黄一级视频 | 中文字幕乱码人妻二区三区 | 久久精品电影 | 大香伊人久久 | 日韩一区二区三区在线视频 | 久久久久亚洲av无码专区首jn | 男女国产视频 | 99免费在线视频 | 麻豆一区产品精品蜜桃的特点 | 黄色a区 | 草色噜噜噜av在线观看香蕉 | 99热这里 | av资源免费| 免费看片视频 | 日韩日韩| 土耳其xxxx性hd极品 | 久久久久人 | 免费黄色的网站 | 操操操日日日 | 国产精品推荐 | 成人影| 女人18岁毛片 | 九九热九九热 | 婷婷影视 | 国产h自拍| 99久久国产综合 | 超碰caoporen | 欧美 日韩 国产 一区 | 精品国产欧美一区二区三区成人 | 黑人性生活视频 | 欧美亚洲在线视频 | 黑人巨大精品 | 视频一区中文字幕 | 色婷婷久久五月综合成人 | 欧美视频免费看欧美视频 | 国产精品午夜福利视频234区 | 国产主播精品在线 | 美女被草 | 在线免费观看av不卡 | 国产免费又粗又猛又爽 | 黄色一级片在线免费观看 | 在线观看网站av | 国产成人精品一区二区三区视频 | 日韩色在线观看 | 美女在线一区 | 黄色三级免费网站 | av直接看 | 久久看视频 | 欧美精品免费视频 | 韩日三级视频 | 麻豆传媒网 | 中文字幕av资源 | 韩国av电影在线观看 | 欧美丰满熟妇bbb久久久 | 亚洲av日韩精品久久久久久久 | 先锋资源av在线 | 51国产偷自视频区视频 | 欧美视频在线一区 | 先锋久久 | 先锋久久| 涩涩屋视频| 亚洲天堂91 | 一区二区视频国产 | 兔费看少妇性l交大片免费 日韩高清不卡 | 亚洲图片在线 | 亚洲第一页中文字幕 | 精品久久久999 | 精品无码一区二区三区的天堂 | 久久综合亚洲 | av导航网站|