关于Android TabHost切换Tab字体的颜色背景颜色改变

最近在做一个平板电脑点餐的系统,要用到TabHost,不太好写,写好了分享给大家,先上图片,默认效果:


切换后效果


先是layout文件夹中的布局文件,代码如下:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:background="@drawable/category_bg"
        android:padding="0dp" >


        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="wrap_content"
            android:layout_height="40dp"/>


        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@drawable/context_bg"
            android:padding="0dp" />
    </LinearLayout>


</TabHost>


然后是java文件,

package com.dzdc.activity;


import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;


import com.dzdc.R;


@SuppressWarnings("deprecation")
public class IndexActivity extends TabActivity {
	private String[] tabMenu = { "热菜", "冷菜", "海鲜", "川菜", "酒饮", "招牌菜" };
	private Intent intent0, intent1, intent2, intent3, intent4, intent5;
	private Intent[] intents = { intent0, intent1, intent2, intent3, intent4,
			intent5 };
	private TabHost.TabSpec tabSpec0, tabSpec1, tabSpec2, tabSpec3, tabSpec4,
			tabSpec5;
	private TabHost.TabSpec[] tabSpecs = { tabSpec0, tabSpec1, tabSpec2,
			tabSpec3, tabSpec4, tabSpec5 };


	private TabHost tabHost = null;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		setContentView(R.layout.index);


		tabHost = getTabHost();


		for (int i = 0; i < tabMenu.length; i++) {
			intents[i] = new Intent();
			intents[i].setClass(this, IndexContentActivity.class);


			tabSpecs[i] = tabHost.newTabSpec(tabMenu[i]);
			tabSpecs[i].setIndicator(tabMenu[i]);// 设置文字
			tabSpecs[i].setContent(intents[i]);// 设置该页的内容


			tabHost.addTab(tabSpecs[i]);// 将该页的内容添加到Tabhost
		}


		tabHost.setCurrentTabByTag(tabMenu[0]); // 设置第一次打开时默认显示的标签,
		
		updateTab(tabHost);//初始化Tab的颜色,和字体的颜色
		
		tabHost.setOnTabChangedListener(new OnTabChangedListener()); // 选择监听器


	}


	class OnTabChangedListener implements OnTabChangeListener {


		@Override
		public void onTabChanged(String tabId) {
			tabHost.setCurrentTabByTag(tabId);
			System.out.println("tabid " + tabId);
			System.out.println("curreny after: " + tabHost.getCurrentTabTag());
			updateTab(tabHost);
		}
	}


	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			System.exit(0);
			return false;
		} else if (keyCode == KeyEvent.KEYCODE_MENU
				&& event.getRepeatCount() == 0) {
			return true; // 返回true就不会弹出默认的setting菜单
		}


		return false;
	}
	
	/**
     * 更新Tab标签的颜色,和字体的颜色
     * @param tabHost
     */
    private void updateTab(final TabHost tabHost) {
        for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
            View view = tabHost.getTabWidget().getChildAt(i);
            TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
 			tv.setTextSize(16);
 			tv.setTypeface(Typeface.SERIF, 2); // 设置字体和风格
            if (tabHost.getCurrentTab() == i) {//选中
                view.setBackgroundDrawable(getResources().getDrawable(R.drawable.category_current));//选中后的背景
                tv.setTextColor(this.getResources().getColorStateList(
     					android.R.color.black));
            } else {//不选中
                view.setBackgroundDrawable(getResources().getDrawable(R.drawable.category_bg));//非选择的背景
                tv.setTextColor(this.getResources().getColorStateList(
     					android.R.color.white));
            }
        }
    }
}








  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值