Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package com.TabTest2; import java.lang.reflect.Field; import android.app.Activity; import android.os.Build; import android.R; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.TabHost; import android.widget.TabWidget; import android.widget.TextView; import android.widget.TabHost.OnTabChangeListener; public class TabTest2 extends Activity { public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(com.TabTest2.R.layout.main); final TabHost tabs=(TabHost)findViewById(com.TabTest2.R.id.tabhost); final TabWidget tabWidget=(TabWidget) findViewById(R.id.tabs); int width =45; int height =48; Field mBottomLeftStrip; Field mBottomRightStrip; tabs.setup(); tabs.addTab(tabs.newTabSpec("first tab") .setIndicator("news",getResources().getDrawable(com.TabTest2.R.drawable.c)) .setContent(com.TabTest2.R.id.tab1)); tabs.addTab(tabs.newTabSpec("second tab") .setIndicator("help",getResources().getDrawable(com.TabTest2.R.drawable.e)) .setContent(com.TabTest2.R.id.tab2)); tabs.addTab(tabs.newTabSpec("third tab") .setIndicator("setting",getResources().getDrawable(com.TabTest2.R.drawable.efg)) .setContent(com.TabTest2.R.id.tab2)); tabs.setCurrentTab(0); for (int i =0; i <tabWidget.getChildCount(); i++) { /** * 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果 */ tabWidget.getChildAt(i).getLayoutParams().height = height; tabWidget.getChildAt(i).getLayoutParams().width = width; /** * 设置tab中标题文字的颜色,不然默认为黑色 */ final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title); tv.setTextColor(this.getResources().getColorStateList(android.R.color.white)); /** * 此方法是为了去掉系统默认的色白的底角 * * 在 TabWidget中mBottomLeftStrip、mBottomRightStrip * 都是私有变量,但是我们可以通过反射来获取 * * 由于还不知道Android 2.2的接口是怎么样的,现在先加个判断好一些 */ if (Float.valueOf(Build.VERSION.RELEASE) <= 2.1) { 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 (com.TabTest2.R.drawable.linee)); mBottomRightStrip.set(tabWidget, getResources().getDrawable (com.TabTest2.R.drawable.linee)); } catch (Exception e) { e.printStackTrace(); } } else { } View vvv = tabWidget.getChildAt(i); if(tabs.getCurrentTab()==i){ vvv.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.shine)); } else { vvv.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.seven)); } } /** * 当点击tab选项卡的时候,更改当前的背景 */ tabs.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(tabs.getCurrentTab()==i){ vvv.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.shine)); } else { vvv.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.seven)); } } }}); } }
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabHost android:id="@+id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="62px"> <AnalogClock android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerHorizontal="true" /> <Button android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="A semi-random button" /> </FrameLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="60px" /> </RelativeLayout> </TabHost> </LinearLayout>
http://www.cnblogs.com/tt_mc/archive/2010/05/26/1744502.html
自定义TAB放置界面底部
最新推荐文章于 2024-07-21 14:57:54 发布