public class CustomTabhost 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.loading, tabs.getTabContentView(), true);
tabs.addTab(tabs.newTabSpec("first tab")
.setIndicator("信息")
.setContent(new Intent(CustomTabhost.this,Load.class))
);
tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("收藏")
.setContent(new Intent(CustomTabhost.this,Load.class)));
tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("设置")
.setContent(new Intent(CustomTabhost.this,Load.class)));
tabs.setCurrentTab(1);
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.substring(0, 3)) <= 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.navbgfocus));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
}
}
/**
* 当点击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.menufocus));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
}
}
}});
}
}
- 大小: 11.6 KB
分享到:
相关推荐
本文将深入探讨如何自定义TabHost来实现类似新浪微博的效果,从而提升用户体验和应用的交互性。 首先,我们需要理解TabHost的基本用法。TabHost是一个容器,它可以包含一个TabWidget(用于显示标签)和一个...
在传统的TabHost使用中,我们通常只能使用系统预设的样式和颜色,但为了使应用更加个性化,开发者经常需要自定义TabHost的外观,例如更改背景颜色。本篇将详细讲解如何在Android中自定义TabHost,实现更换背景颜色。...
然而,系统默认的TabHost功能有限,样式和交互方式可能无法满足所有项目的需求,因此自定义TabHost就显得尤为重要。下面我们将详细探讨如何自定义Android的TabHost,并通过具体的实现案例进行讲解。 首先,理解...
本文将深入探讨如何在Android中自定义TabHost,以简化开发过程并提高效率。 首先,我们要理解TabHost的基本结构。一个TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而...
在“自定义tabhost使用了不同默认的上标签切换页面”这一描述中,我们可以理解为每个Tab可能展示不同的内容,而这些内容可能是通过不同的Activity或Fragment来实现的。当用户点击不同的Tab时,TabHost会根据预设的...
自定义TabHost的样式能够帮助开发者实现更个性化、更具吸引力的用户界面。本文将深入探讨如何自定义Android的TabHost控件样式。 首先,我们从基础开始。TabHost是Android提供的一个布局容器,它包含一个TabWidget...
本篇文章将深入探讨如何在Android中自定义TabHost,以实现美观且功能丰富的界面。 首先,让我们理解TabHost的基本结构。TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示标签的部分,而...
默认的TabHost样式可能不符合所有开发者的设计需求,因此自定义TabHost就显得尤为关键。这篇教程将深入探讨如何在Android中实现自定义TabHost的样式,并提供一个可以直接运行的示例。 首先,我们要理解TabHost的...
在这个项目中,你可能会找到更多关于如何自定义`TabHost`的代码和资源文件,比如`custom_tab_indicator.xml`布局文件,用于定义自定义标签指示器的样式。 总的来说,自定义`TabHost`的关键在于理解`TabSpec`的用法...
然而,Android原生的TabHost样式可能无法满足所有设计需求,因此开发者经常需要对其进行自定义以达到理想的视觉效果。在这个“自定义TabHost例子”中,我们将深入探讨如何创建一个类似微博底部Tab选项卡的UI组件。 ...
总之,自定义TabHost是Android开发中的一个高级技巧,它允许开发者打破常规,创造出更具个性化的选项卡界面。通过调整布局、样式、内容以及交互方式,我们可以为用户提供更加丰富和动态的应用体验。在这个经典案例中...
总的来说,自定义TabHost样式是提升Android应用用户体验的重要手段。通过学习和实践,开发者可以创建出符合自己应用风格的选项卡界面,使应用更具吸引力。在实际编码过程中,务必保持代码的整洁和可读性,充分利用...
自定义TabHost可以帮助我们根据项目需求调整其样式、位置以及交互方式,从而提供更好的用户体验。本篇文章将详细讲解如何自定义TabHost,并通过一个简单的例子来演示这一过程。 首先,让我们了解TabHost的基本结构...
本篇文章将详细介绍如何通过自定义TabHost来实现Activity之间的跳转,以及如何设计一个简洁但功能完备的界面。 首先,理解TabHost的基本结构至关重要。TabHost是一个容器,它包含一个TabWidget(标签栏)和一个...
总之,自定义TabHost是Android开发中的一个重要技巧,它可以帮助我们构建出更加丰富和交互性强的用户界面。通过动态添加选项、实现自动水平滑动以及手势切换,我们可以创造出更具吸引力的移动应用。
本文将详细讲解如何在Android Studio中使用TabHost进行布局设计,以及如何自定义TabHost的各项属性,如字体颜色、大小等。 一、TabHost的基本概念 TabHost是Android SDK提供的一种布局容器,可以容纳一个或多个...
自定义TabHost 传统的`TabHost`默认会显示为带有文本的按钮,但有时我们需要更个性化的展示方式。自定义`TabHost`主要包括以下几个步骤: - **创建自定义TabIndicator**: 可以通过继承`LinearLayout`或其他视图来...
本实例演示了如何在Android应用程序中自定义TabHost,以实现多标签功能。 首先,让我们了解TabHost的基本概念。TabHost是一个容器,它包含一个TabWidget(用于显示标签)和一个FrameLayout(用于显示与标签关联的...
最后,为了使应用更加美观,我们可能还需要在主题(Theme)中设定全局的TabHost样式,包括未选中和选中状态的背景颜色、文字颜色等。这可以在res/values/styles.xml中完成: ```xml <!-- 其他样式 --> ...