Android开发之自己定义TabHost文字及背景(源码分享)
使用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文字及背景(源码分享)的更多相关文章
- Android开发之Serializable 和 Parcelable的差别(源码分享)
android 中自己定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象.保存对象的字节序列到本地文件里. 2.通过 ...
- 【原创】基于NodeJS Express框架开发的一个VIP视频网站项目及源码分享
项目名称:视频网站项目 开发语言:HTML,CSS(前端),JavaScript,NODEJS(expres)(后台) 数据库:MySQL 开发环境:Win7,Webstorm 上线部署环境:Linu ...
- Android开发学习之路-Handler消息派发机制源码分析
注:这里只是说一下sendmessage的一个过程,post就类似的 如果我们需要发送消息,会调用sendMessage方法 public final boolean sendMessage(Mess ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上 ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 收藏了4年的Android 源码分享
Android 超过2个G的源代码集合~~几乎涵盖了所有功能效果的实现,一应俱全~~应有尽有~~ 360云盘地址:Android 各类源码集合汇总 (提取码:f930) 另外,附上Github上及自己 ...
- 又来一波!Android精品源码分享
今天又汇总了几个不错的源码给大家!希望能帮到需要的小伙伴~话不多少,直接上源码! 1.Android精品源码:拖动条控件实现源码 此次分享的源码是一个不错的Android控件,建议大家可以细致的看下. ...
随机推荐
- Django,ajax实现表格增删查改,Django内置分页功能。
1.工程目录 2.urls.py """Django_ajax URL Configuration The `urlpatterns` list routes URLs ...
- UOJ#316. 【NOI2017】泳池
传送门 一道 \(DP\) 好题 设 \(q\) 为一个块合法的概率 套路一恰好为 \(k\) 的概率不好算,算小于等于 \(k\) 的减去小于等于 \(k-1\) 的 那么设 \(f_i\) 表示宽 ...
- JQuery 判断指定ID是否存在
- centos7 安装 maven 和ant git 以及 rocketmq 4.2安装过程(安装成功,调用失败)
1.maven 安装 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /et ...
- Redis 在Golang中使用遇到的坑
1.从lua脚本传回到go那边的数字是string类型 2.hincrby 返回当前值的计算结果(即存放到redis中的值) 3.hset 一个不存在的key,返回什么呢?即设置失败返回什么错误?(会 ...
- Effective C++(1-2) 编译器替换预处理器
1 C++最主要的四部分: C Object-Oriented C++: 面向对象 Template C++:泛型编程 STL C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 2 尽量 ...
- SpringMvc学习---基础知识考核
SpringMVC 1.SpringMVC的工作流程 流程 : 1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMappi ...
- Linux 系统安装[Redhat]
系统下载 Linux操作系统各版本ISO镜像下载 系统安装 1.1. 分区知识 1.2. 磁盘分区命名以及编号 IDE盘: hda 第一块盘 hda1/第一块盘的第一个分区 hdb 第二块盘 h ...
- 2 Docker 镜像基础
Docker 镜像可以从docker.io 下载,也可以自己通过Dockerfile来构建镜像,我有时从国外下载镜像时,网速不行,我就改成国内的镜像,修改如下: # vim /etc/docker/d ...
- 深入浅出SharePoint2010——请假系统无代码篇之数据框架设计
文档库SOP:上传用户操作手册等系统相关文档. 员工信息列表EmployeeInfo:用来存储员工基本信息.直属领导和假卡信息. 请假申请列表LeaveRequest:申请人Requester填写请假 ...