使用TabHost 可以在一个屏幕间进行不同版面的切换,而系统自带的tabhost界面较为朴素,我们应该如何进行自定义修改优化呢

MainActivity的源代码

package com.dream.ledong;import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;import android.view.Gravity;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabWidget;
import android.widget.TextView;import com.example.client.R;@SuppressWarnings("deprecation")
public class itemList extends TabActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.itemlist);final TabHost tabHost = getTabHost();Intent remoteIntent = new Intent(itemList.this, item1.class);TabHost.TabSpec remoteTabSpec = tabHost.newTabSpec("remote");remoteTabSpec.setIndicator("运动推荐");remoteTabSpec.setContent(remoteIntent);tabHost.addTab(remoteTabSpec);Intent localIntent = new Intent(itemList.this, item2.class);TabHost.TabSpec localTabSpec = tabHost.newTabSpec("local");localTabSpec.setIndicator("球友人气");localTabSpec.setContent(localIntent);tabHost.addTab(localTabSpec);Intent localIntent2 = new Intent(itemList.this, item2.class);TabHost.TabSpec localTabSpec2 = tabHost.newTabSpec("a");localTabSpec2.setIndicator("竞技氛围");localTabSpec2.setContent(localIntent2);tabHost.addTab(localTabSpec2);updateTabStyle(tabHost);// 当某个Tab被选中时,则更新背景样式tabHost.setOnTabChangedListener(new OnTabChangeListener() {@Overridepublic void onTabChanged(String tabId) {updateTabStyle(tabHost);}});}private void updateTabStyle(final TabHost mTabHost) {TabWidget tabWidget = mTabHost.getTabWidget();tabWidget.setRightStripDrawable(R.drawable.list_item_divide_operate);tabWidget.setLeftStripDrawable(R.drawable.list_item_divide_operate);for (int i = 0; i < tabWidget.getChildCount(); i++) {RelativeLayout tabView = (RelativeLayout) mTabHost.getTabWidget().getChildAt(i);TextView text = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);text.setTextSize(15);RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) text.getLayoutParams();params.width = RelativeLayout.LayoutParams.MATCH_PARENT;params.height = RelativeLayout.LayoutParams.MATCH_PARENT;text.setLayoutParams(params); text.setGravity(Gravity.CENTER);if (mTabHost.getCurrentTab() == i) {// 选中tabView.setBackgroundColor(Color.parseColor("#8DB6CD"));text.setTextColor(this.getResources().getColorStateList(android.R.color.black));} else {// 未选中tabView.setBackgroundColor(Color.parseColor("#ffffff"));text.setTextColor(this.getResources().getColorStateList(android.R.color.darker_gray));}}}}

Android开发之自定义TabHost文字及背景(源代码分享)相关推荐

  1. Android开发之自定义dialog的实现(源代码分享)

    使用系统自带的dialog如果不能满足我们日常开发的需求,那就得自己构建custom dialog,特别是对于一个app来说,统一的样式风格会给人一种舒服的感觉,所以dialog的样式 .色调一般都要 ...

  2. Android开发之发送邮件功能的实现(源代码分享)

    Android开发中可能会碰到如何发送邮件的困扰,之前我也查了相关的文档,博友们也分享了不少的发送邮件的办法,总共有3种把,我仔细阅读了下,发现有的讲的太过复杂跟麻烦,不够清晰,我今天就来分享下我认为 ...

  3. Android开发之通过CursorAdapter读取数据(源代码分享)

    依照惯例我们先来看下谷歌官方文档对游标适配器的介绍,该适配器可以将数据库的数据暴露给ListView,将数据显示在LIstView空间上.特别注意的一点是,官方文档上写道游标必须包含一个列命名为&qu ...

  4. android自定义横竖双向滚动,Android开发实现自定义水平滚动的容器示例

    Android开发实现自定义水平滚动的容器示例 发布时间:2020-09-12 01:25:56 来源:脚本之家 阅读:71 作者:CharlinGod 本文实例讲述了Android开发实现自定义水平 ...

  5. android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法

    本文实例讲述了Android开发实现按钮点击切换背景并修改文字颜色的方法.分享给大家供大家参考,具体如下: 其实原理很简单,用到的是selector,用来设置android:background和an ...

  6. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  7. 《Android开发卷——自定义日期选择器(三)》

                 继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...

  8. 《Android开发卷——自定义日期选择器(二)》

    (小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...

  9. 【Android开发】自定义圆角button样式

    [Android开发]自定义圆角button样式 结果图 步骤 在res/drawable中新建一个drawable文件,自定义命名为btu.xml; 在btu.xml中设置圆角大小和填充颜色,代码如 ...

最新文章

  1. 【Ubuntu】ping: unknown host www.baidu.com
  2. HTML常见标签易踩坑笔记(一)
  3. centos 7防火墙
  4. C++ 中 const和define的区别
  5. 硕士本科论文通过matlab出仿真图
  6. Python Django 一对一多表设计数据保存
  7. eclipse里启动tomcat无法通过127.0.0.1访问
  8. SpringCloud常见问题总结(二)
  9. 播放框架模块:分而治之
  10. 2021年考计算机考研三战,2021考研的小伙伴有3条忠告一定要记得,这些都是历年实战经验...
  11. mysql 高并发 卡死,高并发中的卡死状态 -HashMap
  12. 软件工程课堂练习购买图书
  13. 整理学 nodejs 资源
  14. 我最喜欢的ORM工具—Simple Data(转)
  15. 在线教学、视频会议 Webus Fox(1)文本、语音、视频聊天及电子白板基本用法...
  16. VS Code unins000尝试在目标目录创建文件时出错
  17. Nansen:你想知道的关于 NFT 的一切
  18. 新西兰计算机科学专业排名,2020年新西兰计算机科学专业排名榜
  19. upnp+捕捉摄相头客户端程序
  20. 微信小程序 环形进度条_微信小程序实现圆形进度条实例分享

热门文章

  1. 联想小新air13pro重装系统_联想 小新Air 13 ProU盘装系统win7教程
  2. 通道注意力机制 cnn keras_【CV中的Attention机制】简单而有效的CBAM模块
  3. php概率函数,PHP全概率运算函数(优化版) Webgame开发必备
  4. php csv,php csv操作类代码
  5. java安全接口调用_步骤3:调用Java接口
  6. java 自定义注解_两步实现Java自定义注解
  7. class.forname找不到类_15个“专科专业”就业找工作容易,关注热度也挺高,报考比较靠谱...
  8. 再谈docker基本命令
  9. 【神仙题】【P4885】 灭顶之灾
  10. 12 HTML5中的影音播放