`

去掉TabActivity底部默认白线

阅读更多
经过一翻百度,google终于实现了TabActivity设置tab自定义背景颜色,设置tab中标题文字的颜色。并将TabWidget置于底部



TabManager:
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;

public class TabManager extends TabActivity{
	private TabManager th;
	private TabHost tabHost;
	private TabWidget tabWidget;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tab_content);
		th = this;
		 tabHost = (TabHost) findViewById(android.R.id.tabhost);
		 LayoutInflater.from(this).inflate(R.layout.main,tabHost.getTabContentView(),true);
		 tabWidget = tabHost.getTabWidget();
		 tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Tab1",th.getResources().getDrawable(R.drawable.ic_menu_home_tab))
				  .setContent(new Intent(this, Tab1.class)));
		 tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Tab2",th.getResources().getDrawable(R.drawable.ic_menu_camera_tab))
				 .setContent(new Intent(this, Tab2.class)));
		 tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("Tab3",th.getResources().getDrawable(R.drawable.ic_menu_search_tab))
				 .setContent(new Intent(this, Tab3.class)));
		 tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("Tab4",th.getResources().getDrawable(R.drawable.ic_menu_upload_tab))
				 .setContent(new Intent(this, Tab4.class)));
		 tabHost.addTab(tabHost.newTabSpec("tab5").setIndicator("Tab5",th.getResources().getDrawable(R.drawable.ic_menu_preferences_tab))
				 .setContent(new Intent(this, Tab5.class)));
		  tabHost.setCurrentTab(0);

		for (int i = 0; i < tabWidget.getChildCount(); i++) {
			/**
			 * 此方法是为了去掉系统默认的色白的底角
			 */
			tabHost.setPadding(tabHost.getPaddingLeft(), tabHost.getPaddingTop(), tabHost.getPaddingRight(), tabHost.getPaddingBottom() - 5);
			View v = tabWidget.getChildAt(i);
			//设置tab背景颜色
			v.setBackgroundResource(R.drawable.tab_indicator);
			
			//设置tab中标题文字的颜色,不然默认为黑色
	        XmlResourceParser xpp = getResources().getXml(R.color.tab_font_selector); 
	        try {
	        	ColorStateList csl= ColorStateList.createFromXml(getResources(),xpp);
	        	TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
	 	        tv.setTextColor(csl);
	        } catch (Exception e){
	        	e.printStackTrace();
	        }
		}
	}
}


tab_indicator.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- Non focused states -->
	<item android:state_focused="false" android:state_selected="false"
		android:state_pressed="false" android:drawable="@color/tab_unselected" />
	<item android:state_focused="false" android:state_selected="true"
		android:state_pressed="false" android:drawable="@color/tab_selected" />

	<!-- Focused states -->
	<item android:state_focused="true" android:state_selected="false"
		android:state_pressed="false" android:drawable="@color/tab_focus" />
	<item android:state_focused="true" android:state_selected="true"
		android:state_pressed="false" android:drawable="@color/tab_focus" />

	<!-- Pressed -->
	<item android:state_pressed="true" android:drawable="@color/tab_press" />
</selector>


tab_font_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- Non focused states -->
	<item android:state_focused="false" android:state_selected="false"
		android:state_pressed="false" android:color="@color/tab_font_unselected" />
	<item android:state_focused="false" android:state_selected="true"
		android:state_pressed="false" android:color="@color/tab_font_selected" />

	<!-- Focused states -->
	<item android:state_focused="true" android:state_selected="false"
		android:state_pressed="false" android:color="@color/tab_font_focus" />
	<item android:state_focused="true" android:state_selected="true"
		android:state_pressed="false" android:color="@color/tab_font_focus" />

	<!-- Pressed -->
	<item android:state_pressed="true" android:color="@color/tab_font_press" />
</selector>


colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>

	<color name="tab_unselected">#ff000000</color>
	<color name="tab_selected">#ff383838</color>
	<color name="tab_focus">#ffff8000</color>
	<color name="tab_press">#ffe9a700</color>

	<color name="tab_font_unselected">#ff888888</color>
	<color name="tab_font_selected">#ffffffff</color>
	<color name="tab_font_focus">#ffffffff</color>
	<color name="tab_font_press">#ff888888</color>

	<color name="black">#FF000000</color>
	<color name="dkgray">#FF444444</color>
	<color name="gray">#FF888888</color>
	<color name="ltgray">#FFCCCCCC</color>
	<color name="white">#FFFFFFFF</color>
	<color name="red">#FFFF0000</color>
	<color name="green">#FF00FF00</color>
	<color name="blue">#FF0000FF</color>
	<color name="yellow">#FFFFFF00</color>
	<color name="cyan">#FF00FFFF</color>
	<color name="magenta">#FFFF00FF</color>
	<color name="transparent">#00000000</color>
</resources>


转自:http://www.cmd100.com/bbs/thread-156307-1-1.html
  • 大小: 13.3 KB
分享到:
评论

相关推荐

    使用tabActivity时,去掉页签底部默认的白线

    但针对你的问题,如果你依然在使用TabActivity,并希望去除底部的默认白线,我们可以探讨一下解决方法。 首先,我们要明确这个“底部默认的白线”通常是由于TabHost在设计时为了区分各个Tab而设置的分隔线。以下是...

    TabActivity底部导航+android屏幕分辨率信息+canvas画布

    1.tabhost+TabActivity实现底部头部导航,本例中为头部导航,不明白可以留言。 2.android屏幕分辨率信息读取方便适配 ; 3. canvas画布画圆弧,扇形,矩形,贝塞尔曲线,六边形等等

    TabActivity笔记

    在Android开发中,`TabActivity`是早期版本中用于实现底部标签栏切换界面的一种方式。这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`...

    用Fragment模拟TabActivity

    本文将详细介绍如何使用`Fragment`来模拟`TabActivity`,并实现类似ELong主界面底部栏的动画切换效果。 首先,我们需要理解`Fragment`的概念。`Fragment`是Android应用中的一个可重用组件,它代表UI的一部分,可以...

    使用 TabActivity 实现滑动翻页(带动画)和标签置底

    在`TabActivity`中实现这个功能较为困难,因为`TabActivity`默认将标签栏置于顶部。一种可能的解决方案是自定义一个底部导航栏,这可以通过创建一个包含底部`LinearLayout`或`RelativeLayout`的布局,并添加多个按钮...

    TabActivity之间跳转、传值

    在Android应用开发中,`TabActivity`是一种常见的用于创建多标签界面的设计模式。它允许用户在不同的标签之间切换,每个标签通常对应一个独立的功能模块。然而,随着Android SDK的更新,`TabActivity`已被废弃,...

    底部Tabbar两种实现(Fragment、TabActivity)

    本教程将深入探讨两种实现底部Tabbar的方法:使用`TabActivity`和使用`Fragment`。这两种方法各有优劣,适用于不同的场景,下面我们将逐一解析。 ### 一、TabActivity实现底部Tabbar `TabActivity`是Android早期...

    TabActivity

    在Android开发中,`TabActivity`是早期用来创建带有选项卡式导航的应用界面的一个关键组件。这个组件允许用户通过在不同的Tab之间切换来浏览多个视图或者内容区域。`TabActivity`结合了`TabHost`和`TabWidget`,使得...

    TabActivity替代

    看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的...

    Android之底部導航欄--RadioGroup、TabHost、TabActivity

    在这个项目中,我们将会探讨如何使用`RadioGroup`、`TabHost`和`TabActivity`来实现类似新浪微博底部导航栏的功能。以下是关于这些组件的详细讲解: 1. **RadioGroup**: `RadioGroup`是Android提供的一个布局容器...

    ActivityGroup 代替TabActivity的用法

    ActivityGroup 代替 TabActivity 的用法 Android 开发中,TabActivity 已经被废除,而使用 ActivityGroup 来代替 TabActivity,可以更加自由灵活,少很多限制和依赖。ActivityGroup 是 Google 提供的一个非常优秀的...

    TabActivity的使用

    在Android开发中,`TabActivity`是早期API版本中用于实现多标签页切换的一种方式。本文将深入探讨`TabActivity`的使用,以及如何通过源码理解和应用它,同时也会介绍一些相关的工具来辅助开发。 `TabHost`是`...

    切换卡TabActivity的使用

    在Android开发中,"切换卡"通常指的是TabActivity或者使用Fragment和TabLayout实现的界面切换效果,这是一种常见的用户界面设计,用于展示多个相关的视图或功能。本篇将详细讲解如何在Android应用中使用TabActivity...

    底部Tabbar的实现(Fragment、TabActivity)

    底部Tabbar是移动应用设计中常见的一种导航模式,主要用于在多个主功能间切换。本教程将探讨如何在Android平台上利用`TabActivity`、`Fragment`以及`ViewPager`来实现这一功能。 首先,我们来了解`TabActivity`。`...

    TabActivity 分页 使用

    在Android开发中,TabActivity是早期用于实现分页视图的一种方式,它允许用户通过不同的Tab切换不同的页面。本文将详细讲解如何在Android应用中使用TabActivity实现分页功能,并结合源码分析其工作原理。 首先,让...

    Fragment + TabActivity实现标签内跳转

    在Android应用开发中,"Fragment + TabActivity实现标签内跳转"是一种常见的界面设计模式,它使得用户可以在同一个界面上通过不同的Tab切换查看不同的内容。TabHost是Android系统提供的一个用于实现标签页功能的组件...

Global site tag (gtag.js) - Google Analytics