Android 自定义Tabhost

来源:互联网 发布:家用网络存储 编辑:程序博客网 时间:2024/05/03 19:10

转载自:http://my.oschina.net/aowu/blog/36282
首先上效果图
这里写图片描述

1.先上AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.priscilla"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="7" />    <application        android:icon="@drawable/icon"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".MyTab" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name=".TabContent" >        </activity>    </application></manifest>2  MyTab.javapackage com.priscilla;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.WeakHashMap;import android.app.TabActivity;import android.content.Context;import android.content.Intent;import android.content.res.Resources;import android.os.Bundle;//import android.view.LayoutInflater;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TabHost;import android.widget.TabWidget;import android.widget.TextView;import android.widget.TabHost.TabSpec;public class MyTab extends TabActivity { /** Called when the activity is first created. */ private TabHost mTabhost; private TabWidget mTabWidget; private LayoutInflater mInflater; private List<TextView> mtext; private List<TabSpec> mTabSpec; private List<LinearLayout> linearLayout; private List<Intent> intent;  private Context mContext; public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  mContext = this;  mInflater = LayoutInflater.from(this);  // mTabhost = this.getTabHost();// 从TabActivity上面获取放置Tab的TabHost  mTabhost = (TabHost) findViewById(android.R.id.tabhost);  mTabWidget = (TabWidget) findViewById(android.R.id.tabs);  mTabSpec = new ArrayList<TabSpec>();  linearLayout = new ArrayList<LinearLayout>();  mtext = new ArrayList<TextView>();  intent = new ArrayList<Intent>();  creatTab(); } public void creatTab() {  for (int i = 0; i < 3; i++) {   mTabSpec.add(mTabhost.newTabSpec("tab" + i));   linearLayout.add((LinearLayout) mInflater.inflate(     R.layout.tabwidget, null));   mtext.add((TextView) linearLayout.get(i)     .findViewById(R.id.tab_name));   mtext.get(i).setText(     mContext.getResources().getString(R.string.tab_name,       String.valueOf(i)));   mTabSpec.get(i).setIndicator(linearLayout.get(i));   //mTabSpec.get(i).setContent(list.get(i));   intent.add(new Intent(mContext, TabContent.class));   Log.v("---whty---", mTabSpec.get(i).getTag());   Bundle buddle = new Bundle();   buddle.putString("tab", mTabSpec.get(i).getTag());   intent.get(i).putExtras(buddle);   mTabSpec.get(i).setContent(intent.get(i));   mTabhost.addTab(mTabSpec.get(i));  } }}2.TabContent.javapackage com.priscilla;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;public class TabContent extends Activity { private TextView textView; private ImageView imgView; @Override protected void onCreate(Bundle savedInstanceState) {  // TODO Auto-generated method stub  super.onCreate(savedInstanceState);  setContentView(R.layout.tabcontent);  textView = (TextView) findViewById(R.id.TextView);  imgView = (ImageView) findViewById(R.id.ImageView);  Bundle buddle = this.getIntent().getExtras();  String flag = buddle.getString("tab");  if ("tab0".equals(flag)) {   textView.setText(getResources().getString(R.string.andy));   Bitmap bitmap = BitmapFactory.decodeResource(getResources(),     R.drawable.andy);   imgView.setImageBitmap(bitmap);  }  if ("tab1".equals(flag)) {   textView.setText(getResources().getString(R.string.bill));   Bitmap bitmap = BitmapFactory.decodeResource(getResources(),     R.drawable.bill);   imgView.setImageBitmap(bitmap);  }  if ("tab2".equals(flag)) {   textView.setText(getResources().getString(R.string.linux));   Bitmap bitmap = BitmapFactory.decodeResource(getResources(),     R.drawable.torvalds);   imgView.setImageBitmap(bitmap);  } }}3.3个layoutmain.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"    android:background="@color/wcity_normal_bg" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        <TabWidget            android:id="@android:id/tabs"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:background="@drawable/con_film_bottom_tab" />        <FrameLayout            android:id="@android:id/tabcontent"            android:layout_width="fill_parent"            android:layout_height="fill_parent" >        </FrameLayout>    </LinearLayout></TabHost>tabwidget.xml<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"  android:orientation="horizontal" android:gravity="center" > <TextView   android:id="@+id/tab_name"   android:layout_width="fill_parent"   android:layout_height="39dp"  android:layout_marginLeft="2dp"  android:layout_marginRight="2dp"  android:ellipsize="marquee"    android:marqueeRepeatLimit="marquee_forever"  android:singleLine="true"  android:gravity="center"   android:textColor="@drawable/tab_selector"  android:background="@drawable/tab_bg_selector" /></LinearLayout>tabcontent.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/linearLayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_horizontal"    android:orientation="vertical" >    <ImageView        android:id="@+id/ImageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:scaleType="fitXY" />    <TextView        android:id="@+id/TextView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="24dip" /></LinearLayout>4.2个drawabletab_bg_selector.xml<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/con_film_tab_pressed"  /></selector>tab_selector.xml<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="false" android:color="#ffffffff"/> <item android:state_selected="true" android:color="#ffEEC900"/></selector>

5张用到的图
这里写图片描述
andy.jpg

这里写图片描述
bill.jpg

这里写图片描述
torvalds.jpg

这里写图片描述
con_film_bottom_tab.9.png

这里写图片描述
con_film_tab_pressed.9.png

6.colors.xml  string.xmlcolors.xml<?xml version="1.0" encoding="utf-8"?><resources>    <color name="wcity_normal_bg">#ffe5eff4</color></resources>string.xml<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, my</string>    <string name="app_name">myTab</string>    <string name="andy">Android的创造者: Andy Rubin</string>    <string name="bill">Java创造者之一: Bill Joy</string>    <string name="linux">Linux之父: Linus Torvalds</string>    <string name="tab_name">选项卡%1$s</string>    </resources>
0 0