原文地址,转载请注明,谢谢!http://www.youmi.net/bbs/thread-102-1-4.html
1.先看看效果图吧!happy一下!
2.看核心代码,注释不多,大家不懂的自己查吧!
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.*;
import android.widget.TabHost.OnTabChangeListener;
import android.os.Build;
import android.view.View;
import java.lang.reflect.Field;
import android.view.LayoutInflater;
public class testTabActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int width =45;
int height =48;
final TabHost tabs = getTabHost();
final TabWidget tabWidget = tabs.getTabWidget();
Field mBottomLeftStrip;
Field mBottomRightStrip;
LayoutInflater.from(this).inflate(R.layout.tab_views, tabs.getTabContentView(), true);
tabs.addTab(tabs.newTabSpec("first tab")
.setIndicator("信息",getResources().getDrawable(R.drawable.m))
.setContent(new Intent(testTabActivity.this,OneActivty.class))
);
tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("收藏",getResources().getDrawable(R.drawable.n))
.setContent(R.id.content));
tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("设置",getResources().getDrawable(R.drawable.s))
.setContent(R.id.content));
for (int i =0; i < tabWidget.getChildCount(); i++) {
/**
* 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果
*/
tabWidget.getChildAt(i).getLayoutParams().height = height;
tabWidget.getChildAt(i).getLayoutParams().width = width;
/**
* 设置tab中标题文字的颜色,不然默认为黑色
*/
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(android.R.color.white));
/**
* 此方法是为了去掉系统默认的色白的底角
*
* 在 TabWidget中mBottomLeftStrip、mBottomRightStrip
* 都是私有变量,但是我们可以通过反射来获取
*
* 由于还不知道Android 2.2的接口是怎么样的,现在先加个判断好一些
*/
if (Float.valueOf(Build.VERSION.RELEASE) <= 2.1) {
try {
mBottomLeftStrip = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip");
mBottomRightStrip = tabWidget.getClass().getDeclaredField ("mBottomRightStrip");
if(!mBottomLeftStrip.isAccessible()) {
mBottomLeftStrip.setAccessible(true);
}
if(!mBottomRightStrip.isAccessible()){
mBottomRightStrip.setAccessible(true);
}
mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));
mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));
} catch (Exception e) {
e.printStackTrace();
}
} else {
/**
* 不做任何处理
*/
}
View vvv = tabWidget.getChildAt(i);
if(tabs.getCurrentTab()==i){
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
}
}
/**
* 当点击tab选项卡的时候,更改当前的背景
*/
tabs.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
for (int i =0; i < tabWidget.getChildCount(); i++) {
View vvv = tabWidget.getChildAt(i);
if(tabs.getCurrentTab()==i){
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
}
}
}});
}
}
- 大小: 42.7 KB
- 大小: 12.1 KB
- 大小: 12.1 KB
分享到:
相关推荐
`TabHost`是Android SDK提供的一种原生组件,用于实现这种多标签页的布局。本篇文章将深入探讨如何利用`TabHost`在Android中创建标签页。 ### 一、TabHost基本概念 `TabHost`是Android中的一个容器类,它允许...
总的来说,自定义TabHost是一个涉及UI设计和交互逻辑的过程,它可以让你的Android应用拥有独特的标签栏设计。通过学习和实践,开发者可以根据项目需求创建出符合品牌形象且功能完善的标签栏,提高用户的使用体验。
通过以上步骤,你将能够成功自定义Android的TabHost,包括更换背景颜色。不过,随着Android版本的更新,TabHost的使用逐渐被Fragment和BottomNavigationView等组件取代,但理解如何自定义TabHost仍然是Android开发中...
总结来说,自定义Android的TabHost可以使应用的界面更加个性化,同时通过合理利用Fragment可以优化性能。在实际开发中,还可以根据需求调整选项卡的行为,比如添加滑动效果、动画等。通过掌握这些技巧,你可以在...
在Android开发中,TabHost是一个常用的组件,用于创建带有多个Tab的...通过理解TabHost的工作原理,以及对XML布局和Java代码的熟练运用,我们可以创造出符合个性化需求的Tab界面,无论是将标签放在屏幕左侧还是右侧。
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,使得用户可以在不同的视图间切换。"android 滑动的tabhost"是指将传统的TabHost与手势滑动结合,实现更流畅、更具互动性的用户体验。在...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,使得用户可以在不同的视图间切换。自定义TabHost的样式能够帮助开发者实现更个性化、更具吸引力的用户界面。本文将深入探讨如何自定义...
本示例主要讲解如何使用自定义的Button和TabHost来实现页面间的切换,从而创建一个具有个性化标签导航功能的应用。 首先,我们来看看“自定义button”。在Android原生的Button组件基础上进行自定义,主要是为了满足...
在Android开发中,`TabHost`是一个非常重要的组件,它用于创建具有多个“标签”(tabs)的应用界面,每个标签代表一个不同的活动或视图。`TabHost`提供了用户友好的交互方式,允许用户通过点击标签在不同内容之间...
总之,自定义TabHost是Android开发中的一个高级技巧,它允许开发者打破常规,创造出更具个性化的选项卡界面。通过调整布局、样式、内容以及交互方式,我们可以为用户提供更加丰富和动态的应用体验。在这个经典案例中...
在Android开发中,TabHost组件通常用于创建带有多个Tab标签的应用界面,每个标签代表一个不同的内容区域。在标准布局中,TabHost通常显示在屏幕顶部,但为了满足特定设计需求,有时我们需要将其调整到屏幕底部并实现...
在Android开发中,`TabHost`是一个非常重要的组件,它允许开发者在应用程序中创建具有多个选项卡的用户界面。这个组件使得用户可以在不同的视图或功能之间轻松切换,提供了良好的导航体验。`TabHost`结合了`...
在Android开发中,`TabHost` 是一个非常重要的组件,用于实现标签页切换的效果,常用于构建多页面的用户界面。本教程将详细介绍如何使用 `TabHost` 创建自定义按钮菜单,以提供丰富的交互体验。 首先,理解 `...
在Android开发中,`TabHost` 是一个非常重要的...如果你想要更深入地学习`TabHost`以及Android UI设计,可以参考Android官方文档和其他开发者社区的资源,它们提供了大量的实例和技巧,帮助你更好地掌握这一核心组件。
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以切换到不同的活动或...通过这样的方式,你可以在Android应用中创建一个底部对齐的TabHost,提供更加个性化的用户体验。
本资源"Android应用源码之封装的一个tabhost框架.zip"提供了一个具体的TabHost实现,可以帮助开发者更好地理解和使用这个组件。 TabHost在Android SDK中是作为视图容器来设计的,它允许开发者在一个界面上组织多个...
总之,这个"封装的一个tabhost框架.zip"是一个学习Android TabHost功能的实用资源,它可以帮助开发者理解如何创建多标签的用户界面,并提供了一些可能的扩展点,如自定义样式和动态加载。通过研究和实践这个框架,...
TabHost是Android SDK中用于创建多标签界面的控件,它允许用户在不同的视图间切换,通常与TabWidget结合使用来展示各个标签。在传统的TabHost使用中,标签通常是竖直排列的,但此源码实现了横向拖动的效果,使得用户...
在Android开发中,`TabHost` 和 `RadioGroup` 是两个重要的组件,它们分别用于创建传统的标签页式界面和实现单选按钮组的功能。在标题"tabhost+radiogroup"中,提到的是一个不使用标准`TabWidget`,而是利用`...
在Android开发中,TabWidget和TabHost是用于创建具有多个选项卡界面的常用组件。本文将深入探讨如何自定义TabWidget的TabHost,以便为用户提供更丰富的交互体验。首先,让我们了解一下这两个组件的基本概念。 ...