展会信息港展会大全

关于Android TabHost切换Tab字体的颜色背景颜色改变
来源:互联网   发布日期:2015-10-03 11:12:38   浏览:3041次  

导读:[java] 最近在做一个平板电脑点餐的系统,要用到TabHost,不太好写,写好了分享给大家,先上图片,默认效果: 最近在做一个平板电脑点餐的系统,要用到TabHost,不太好写,写好了分享给大家,先上图片,默认效果: 切换后效果 先是layout文件夹中的布局文件...

[java]

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

最近在做一个平板电脑点餐的系统,要用到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文件,

[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));

}

}

}

}

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));

}

}

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港