利用TabHost自定义底部导航栏
来源:互联网 发布:卡盟域名填什么 编辑:程序博客网 时间:2024/05/17 05:19
布局中的引用
<com.itheima.oschina.base.MyFragmentTabHost android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dip"/>
自定义的MyFragmentTabHost
public class MyFragmentTabHost extends FragmentTabHost { private String mCurrentTag; private String mNoTabChangedTag;public MyFragmentTabHost(Context context, AttributeSet attrs) { super(context, attrs); }@Overridepublic void onTabChanged(String tag) { Log.e("测试","tag:" + tag); Log.e("测试","mCurrentTag:" + mCurrentTag); Log.e("测试","mNoTabChangedTag:" + mNoTabChangedTag); if (tag.equals(mNoTabChangedTag)) { setCurrentTabByTag(mCurrentTag); } else { super.onTabChanged(tag); mCurrentTag = tag; } }public void setNoTabChangedTag(String tag) { this.mNoTabChangedTag = tag; }}
枚举(用来提供TabHost的内容)
public enum MainTab { NEWS(0, R.string.main_tab_name_news, R.drawable.tab_icon_new, ComprehensiveFragment.class), TWEET(0, R.string.main_tab_name_tweet, R.drawable.tab_icon_tweet, TweetsViewPagerFragment.class), QUICK(0, R.string.main_tab_name_quick, R.drawable.tab_icon_new, null), EXPLORE(0, R.string.main_tab_name_explore, R.drawable.tab_icon_explore, FindFragment.class), ME(0, R.string.main_tab_name_my, R.drawable.tab_icon_me, MyInformationFragment.class); private int id; private int resName; private int resIcon; private Class<?> clz;private MainTab(int id, int resName, int resIcon, Class<?> clz) { this.id = id; this.resName = resName; this.resIcon = resIcon; this.clz = clz; }public int getId() { return id; }public void setId(int id) { this.id = id; }public int getResName() { return resName; }public void setResName(int resName) { this.resName = resName; }public int getResIcon() { return resIcon; }public void setResIcon(int resIcon) { this.resIcon = resIcon; }public Class<?> getClz() { return clz; }public void setClz(Class<?> clz) { this.clz = clz; }}
在Activity中的用法
private MyFragmentTabHost mTabHost;private void intiBottom() { // 设置底部栏 mTabHost = (MyFragmentTabHost) findViewById(R.id.tab); mTabHost.setup(this,getSupportFragmentManager(),R.id.content);// 初始化 tabhost if (Build.VERSION.SDK_INT > 10) { mTabHost.getTabWidget().setShowDividers(0); # initTabs(); mTabHost.setCurrentTab(0); mTabHost.setOnTabChangedListener(this); } ImageView showQuickOption = (ImageView) findViewById(R.id.quick_option_iv); showQuickOption.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showQuickOption(); } }); }#initTabsprivate void initTabs() { MainTab[] tabs = MainTab.values(); int size = tabs.length; for (int i = 0; i < size; i++) { MainTab mainTab = tabs[i]; TabHost.TabSpec tab = mTabHost.newTabSpec(getString(mainTab.getResName()));View view = LayoutInflater.from(getApplicationContext()).inflat(R.layout.tab_indicator, null); TextView title = (TextView) view.findViewById(R.id.tab_title); Drawable drawable = this.getResources().getDrawable(mainTab.getResIcon()); title.setCompoundDrawablesWithIntrinsicBounds(null,drawable,null,null); if (i == 2){ view.setVisibility(View.INVISIBLE); mTabHost.setNoTabChangedTag(getString(mainTab.getResName())); } title.setText(getString(mainTab.getResName())); tab.setIndicator(view); tab.setContent(new TabHost.TabContentFactory() { @Override public View createTabContent(String tag) { return new View(HomeActivity.this); } }); mTabHost.addTab(tab,mainTab.getClz(),null); } }#onTabChanged@Overridepublic void onTabChanged(String tabId) { int size = mTabHost.getTabWidget().getTabCount(); for (int i = 0; i < size; i++) { View view = mTabHost.getTabWidget().getChildAt(i); if (i == mTabHost.getCurrentTab()){ view.setSelected(true); }else{ view.setSelected(false); } } }
阅读全文
1 0
- 利用TabHost自定义底部导航栏
- TabHost+RadioGroup实现底部导航栏
- android TabHost制作底部导航栏
- TabHost详解:实现底部导航栏
- TabHost底部导航
- TabHost实现底部导航示例
- TabActivity自定义底部导航栏
- 自定义底部导航栏图标
- 安卓精美底部导航栏的实现TabHost
- 【Android基础篇】TabHost实现底部导航栏
- 安卓UI--底部导航栏--TabHost、TabActivity
- 使用tabhost做底部导航,当对话框弹窗调起软件盘时,底部导航栏向上提
- TabHost、RadioGroup实现底部菜单导航
- RadioGroup+TabHost组合实现底部导航
- TabHost、RadioGroup、ToolBar实现底部菜单导航
- 底部导航栏:利用viewpager实现Android底部标题栏
- 底部导航栏:利用viewpager实现Android底部标题栏
- TabHost实现底部栏
- gitignore_global设置
- 记2017年工作辞职
- Spring Boot 框架搭建 (持续更新) 初学
- leetcode--symmetric-tree
- Yii2: the file or directory to be published does not exist bower/jquery/dist
- 利用TabHost自定义底部导航栏
- bat 脚本之获取当前时间
- 本地搜索神器Everything
- js实现导航条等滚动后位置固定
- iOS 返回键文字隐藏
- 2017Android 面试回忆录(腾讯/阿里/滴滴/美团...)(附答案 )更新中。。
- Hibernate,JPA注解(一)
- Is It A Tree?
- 多周期CPU设计——流水灯