用到的布局xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?> <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:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> </FrameLayout> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:layout_height="wrap_content"/> </LinearLayout> </TabHost>
Activity 中抒写的代码:
//记得先定义这几个变量 private TabHost tabHost; private TabWidget tabWidget; Field mBottomLeftStrip; Field mBottomRightStrip; public TabHost makeTab(){ if(this.tabHost == null){ tabHost = (TabHost)findViewById(android.R.id.tabhost); tabWidget = (TabWidget)findViewById(android.R.id.tabs); tabHost.setup(); tabHost.bringToFront(); TabSpec nearby_tab = tabHost.newTabSpec("nearby_tab"); TabSpec history_tab = tabHost.newTabSpec("history_tab"); TabSpec about_tab = tabHost.newTabSpec("about_tab"); nearby_tab.setIndicator("first",getResources().getDrawable(R.drawable.first)).setContent(new Intent(this,first.class)); history_tab.setIndicator("second",getResources().getDrawable(R.drawable.second)).setContent(new Intent(this,second.class)); about_tab.setIndicator("third",getResources().getDrawable(R.drawable.third)).setContent(new Intent(this,third.class)); tabHost.addTab(nearby_tab); tabHost.addTab(history_tab); tabHost.addTab(about_tab); if (Integer.valueOf(Build.VERSION.SDK) <= 7) { try { mBottomLeftStrip = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip"); mBottomRightStrip = tabWidget.getClass().getDeclaredField ("mBottomRightStrip"); if(!mBottomLeftStrip.isAccessible()) { mBottomLeftStrip.setAccessible(true); } if(!mBottomRightStrip.isAccessible()){ mBottomRightStrip.setAccessible(true); } mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee)); mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee)); } catch (Exception e) { e.printStackTrace(); } } else { try { mBottomLeftStrip = tabWidget.getClass().getDeclaredField("mLeftStrip"); mBottomRightStrip = tabWidget.getClass().getDeclaredField("mRightStrip"); if (!mBottomLeftStrip.isAccessible()) { mBottomLeftStrip.setAccessible(true); } if (!mBottomRightStrip.isAccessible()) { mBottomRightStrip.setAccessible(true); } mBottomLeftStrip.set(tabWidget, getResources().getDrawable(R.drawable.linee)); mBottomRightStrip.set(tabWidget, getResources().getDrawable(R.drawable.linee)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } for (int i =0; i <tabWidget.getChildCount(); i++) { final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title); tv.setTextColor(Color.WHITE); View vvv = tabWidget.getChildAt(i); if(tabHost.getCurrentTab()==i){ vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.focus)); } else { vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.unfocus)); } } tabHost.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub for (int i =0; i < tabWidget.getChildCount(); i++) { View vvv = tabWidget.getChildAt(i); if(tabHost.getCurrentTab()==i){ vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.focus)); } else { vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.unfocus)); } } } }); } else{ return tabHost; } return null; }
<ignore_js_op> TestTab.zip (107.97 KB, 下载次数: 778)
Android TabHost 的美化与设计
时间: 2024-11-05 11:45:06