使用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 {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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() {
@Override
public 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开发之Serializable 和 Parcelable的差别(源码分享)

    android 中自己定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象.保存对象的字节序列到本地文件里. 2.通过 ...

  2. 【原创】基于NodeJS Express框架开发的一个VIP视频网站项目及源码分享

    项目名称:视频网站项目 开发语言:HTML,CSS(前端),JavaScript,NODEJS(expres)(后台) 数据库:MySQL 开发环境:Win7,Webstorm 上线部署环境:Linu ...

  3. Android开发学习之路-Handler消息派发机制源码分析

    注:这里只是说一下sendmessage的一个过程,post就类似的 如果我们需要发送消息,会调用sendMessage方法 public final boolean sendMessage(Mess ...

  4. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  5. Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

    原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上 ...

  6. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  7. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  8. 收藏了4年的Android 源码分享

    Android 超过2个G的源代码集合~~几乎涵盖了所有功能效果的实现,一应俱全~~应有尽有~~ 360云盘地址:Android 各类源码集合汇总 (提取码:f930) 另外,附上Github上及自己 ...

  9. 又来一波!Android精品源码分享

    今天又汇总了几个不错的源码给大家!希望能帮到需要的小伙伴~话不多少,直接上源码! 1.Android精品源码:拖动条控件实现源码 此次分享的源码是一个不错的Android控件,建议大家可以细致的看下. ...

随机推荐

  1. 从JSON中读取数据追加到HTML中

    本文来自https://www.jianshu.com/p/04127d74d88c,并非本人原创,只是作为自己学习使用的资料,如有浏览者请点击地址自行到原作者页面浏览 有时候我们需要将json数据直 ...

  2. select实现三级联动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. HDU P2089

    题目大意为,统计区间内不含4和62的数字的个数: 老实说,看到这题我是抵触的..... 基本上是数位DP的板子,话说数位DP好像全是模板题吧: 预处理,有关的整区间的数字个数: 调用已有的区间,求解0 ...

  4. php中ip转int 并存储在mysql数据库

    遇到一个问题,于是百度一下. 得到最佳答案 http://blog.163.com/metlive@126/blog/static/1026327120104232330131/     如何将四个字 ...

  5. 代码整洁之道读书笔记(Ch4-Ch7)

    这几章从注释.程序格式.对象与数据结构的规范以及错误处理四个方面介绍了如何使代码变得简洁易懂.不同于上次摘抄的方法,这一次我会结合第一次个人作业的代码进行分析. 第四章  注释 这一章告诉我们,好的注 ...

  6. 在AndroidStudio中数据存储第三方数据管理Bmob的使用

    ---恢复内容开始--- 在日常写代码的过程中我们比较痛苦的就是数据库的建立和使用,那么今天来介绍一下一个第三方的数据管理平台Bmonb. 一.我们首先进入Bmob的官网创建一个账号 Bome官网网址 ...

  7. 读<css世界>笔记之img标签

    Web开发时,为了节约带宽以及提高加载性能,首屏以下的图片就会通过滚屏加载的方式异步加载,然后这个即将被异步加载的图片为了布局稳健,体验良好,往往会使用一张透明的图片占位,如: <img src ...

  8. mssql修改id

    alter   table   image   alter   column   id     int   IDENTITY   (1,   1)   NOT   NULL 我只能上查询分析器,所以只 ...

  9. pt-summary

    pt-summary主要是用来统计机器信息: [root@mxqmongodb2 bin]# ./pt-summary # Percona Toolkit System Summary Report ...

  10. windows 下 gdb 的安装

    在 windows 下 gcc/g++ 的安装 这篇文章中已经提到,用MinGW Installation Manager可以方便地管理 MinGW 组件,因此使用该软件安装 gdb . 打开 Min ...