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