1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android tabhost黑色背景 关于Android TabHost切换Tab字体的颜色背景颜色改变

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

时间:2023-03-13 01:11:18

相关推荐

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

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

切换后效果

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

android:id="@android:id/tabhost"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:background="@drawable/category_bg"

android:padding="0dp" >

android:id="@android:id/tabs"

android:layout_width="wrap_content"

android:layout_height="40dp"/>

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/context_bg"

android:padding="0dp" />

然后是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));

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。