android tabhost 分割线,FragmentTabHost使用方法详解
FragmentTabHost使用方法详解
发布时间:2020-08-19 23:32:55
来源:脚本之家
阅读:171
作者:mChenys
FragmentTabHost是support-v包下提供的用于集成和管理Fragment页面的组件.
今天要实现的效果图如下:
整体结构是MainActivity+5个模块的Fragment.
MainActivity的布局如下:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:id="@+id/real_tabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>
每个tab的布局如下:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
android:id="@+id/iv_tab"
android:layout_width="26dp"
android:layout_height="26dp"
/>
android:id="@+id/tv_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:textSize="12sp"/>
MainActivity代码如下:
package blog.csdn.net.mchenys.bsbdj.modul.main;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.support.v4.app.FragmentTabHost;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TextView;
import blog.csdn.net.mchenys.bsbdj.R;
import blog.csdn.net.mchenys.bsbdj.common.base.BaseActivity;
import blog.csdn.net.mchenys.bsbdj.modul.attention.view.AttentionFragment;
import blog.csdn.net.mchenys.bsbdj.modul.essence.view.EssenceFragment;
import blog.csdn.net.mchenys.bsbdj.modul.mine.view.MineFragment;
import blog.csdn.net.mchenys.bsbdj.modul.newpost.view.NewpostFragment;
import blog.csdn.net.mchenys.bsbdj.modul.publish.view.PublishFragment;
import blog.csdn.net.mchenys.bsbdj.mvp.presenter.impl.MvpBasePresenter;
/**
* Created by mChenys on 2016/5/27.
*/
public class MainActivity extends BaseActivity {
//定义数组来存放tab的图片选择器
private int[] mTabImage = {R.drawable.main_bottom_essence_selector,
R.drawable.main_bottom_latest_selector,
R.drawable.main_bottom_writeposts_selector,
R.drawable.main_bottom_news_selector,
R.drawable.main_bottom_my_selector};
//tab选项卡的文字
private String[] mTabTitle = {"精华", "新帖", "", "关注", "我的"};
//每个tab对应的Fragment的字节码对象
private Class[] fragmentArray = {EssenceFragment.class, NewpostFragment.class,
PublishFragment.class, AttentionFragment.class, MineFragment.class};
@Override
protected boolean isHomePage() {
return true;
}
@Override
public Integer getLayoutResId() {
return R.layout.activity_main;
}
@Override
public void initView() {
//获取tabhost
FragmentTabHost tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
//绑定tabContent
tabHost.setup(this, getSupportFragmentManager(), R.id.real_tabcontent);
//去掉分割线
tabHost.getTabWidget().setDividerDrawable(null);
for (int i = 0; i < fragmentArray.length; i++) {
//绑定Fragment,添加到的FragmentTabHost
//设置tab的名称和view
TabHost.TabSpec tabSpec = tabHost.
newTabSpec(mTabTitle[i]).
setIndicator(getTabItemView(i));
Bundle bundle = new Bundle();
bundle.putString("title", mTabTitle[i]);
//添加tab和关联对应的fragment
tabHost.addTab(tabSpec, fragmentArray[i], bundle);
//设置tab的背景色
tabHost.getTabWidget().
getChildAt(i).
setBackgroundColor(getResources().getColor(R.color.bgColor));
}
//默认选中第一个tab
tabHost.setCurrentTab(0);
//设置tab的切换监听
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
//可以在这里监听tab的切换
}
});
}
//tab的字体选择器
ColorStateList mColorStateList;
/**
* 给Tab按钮设置图标和文字
*/
private View getTabItemView(int index) {
View view = getLayoutInflater().inflate(R.layout.view_tab_indicator, null);
ImageView imageView = (ImageView) view.findViewById(R.id.iv_tab);
TextView textView = (TextView) view.findViewById(R.id.tv_tab);
//设置图片选择器
imageView.setImageResource(mTabImage[index]);
//设置字体选择器
if (mColorStateList == null) {
mColorStateList = getResources().
getColorStateList(R.color.main_bottom_text_selector);
textView.setTextColor(mColorStateList);
}
//设置tab的文字
if (TextUtils.isEmpty(mTabTitle[index])) {
//如果没有名称,则隐藏tab下的textView
textView.setVisibility(View.GONE);
} else {
textView.setVisibility(View.VISIBLE);
textView.setText(mTabTitle[index]);
}
return view;
}
@Override
public void initListener() {
}
@Override
public void initData() {
}
@Override
public void reLoadData() {
}
@Override
public void onClick(View v) {
}
@Override
public MvpBasePresenter bindPresenter() {
return null;
}
}
最后附上字体选择器
图片选择器有5个,这里附上一个,其他类似:
xmlns:android="http://schemas.android.com/apk/res/android">
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
android tabhost 分割线,FragmentTabHost使用方法详解相关推荐
- android 多闹钟实现代码,Android编程实现闹钟的方法详解
Android编程实现闹钟的方法详解 发布时间:2020-09-30 10:18:02 来源:脚本之家 阅读:75 作者:Jacob-wj 本文实例讲述了Android编程实现闹钟的方法.分享给大家供 ...
- Android之TelephonyManager类的方法详解
林计钦-JAVA java技术群:127834248 博客园 首页 社区 新随笔 联系 订阅 管理 随笔-105 评论-24 文章-0 trackbacks-0 Andr ...
- android 编程 闹钟,Android编程实现闹钟的方法详解
本文实例讲述了Android编程实现闹钟的方法.分享给大家供大家参考,具体如下: 在Android中,有一个闹钟的类,AlarmManager类,我们可以通过其来对系统内的通知进行操作! 本文用到了S ...
- Android Gallery控件使用方法详解
我们今天给大家讲的就是Gallery控件,这个控件在android当中是非常重要的,我们今天就给大家介绍一下3D的Gallery控件是怎么样来实现的.下面我们就来直接看看代码吧. 1.扩展Galler ...
- android网络请求库volley方法详解
使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列 ...
- 5种方法完美解决android软键盘挡住输入框方法详解
版权声明:本文为CSDN博主「潇潇凤儿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/smileiam/ ...
- android 低内存方法,android onLowMemory低内存回调方法详解
onLowMemory方法顾名思义就是在app内存低的时候回调,那么怎样才是内存低的标准,回调流程又是如何?我们一起带着问题去看源代码解析. onLowMemory方法在Activity,Servie ...
- android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】
本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...
- android组件用法说明,Android第三方控件PhotoView使用方法详解
Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...
最新文章
- C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客
- mybatis整合ehcache
- IE滤镜实现透明度/阴影/渐变等特效
- 假笨说-从一起GC血案谈到反射原理
- QQ病毒越来越人性化了
- C++ 学习基础篇(一)—— C++与C 的区别
- simulink学习仿真(微分模块、传递函数模块使用、波特图频率特性)day3
- 经典按键java手机游戏_菜鸟也能轻松吃鸡的神器——莱仕达P30S手机游戏手柄体验...
- Mars-Android开发视频教程(全集)
- spss多元线性回归散点图_利用SPSS进行线性回归分析
- 选用什么云服务器做编程学习比较好?
- 统一社会信用代码校验和生成
- Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件 警告
- Elasticsearch通过_update_by_query和script批量修改文档
- 用matlab画三叶玫瑰,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...
- steam上的异形扫雷游戏tametsi技巧
- keep 虚拟路线修改器_二次元出圈搞综艺,杨颖、虞书欣、小鬼打造二次元虚拟偶像...
- 飞利浦与联合利华签署2021年度战略合作备忘录;3M推出全新即时除菌擦拭布 | 美通企业日报...
- 如何利用Flutter框架开发运行小程序
- 赛迪智库:政务数据不愿共享的成因及对策