首页 > 代码库 > Android TabHost 的美化与设计
Android TabHost 的美化与设计
用到的布局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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。