android自定义tabhost,tabcontent用intent获得
地址:http://my.oschina.net/aowu/blog/36282
自己改的自定义tabhost组建,效果图如左。有更好的朋友可以相互交流一下,嘿嘿。
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.java
package 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();
/*
* mTabhost.addTab(mTabhost .newTabSpec("选项卡1") .setIndicator(
* (LinearLayout) LayoutInflater.from(this).inflate( R.layout.tabwidget,
* null)) .setContent(R.id.linearLayout01)); mTabhost.addTab(mTabhost
* .newTabSpec("选项卡2") .setIndicator( (LinearLayout)
* LayoutInflater.from(this).inflate( R.layout.tabwidget, null))
* .setContent(R.id.linearLayout02)); mTabhost.addTab(mTabhost
* .newTabSpec("选项卡3") .setIndicator( (LinearLayout)
* LayoutInflater.from(this).inflate( R.layout.tabwidget, null))
* .setContent(R.id.linearLayout03));
*/
// 设置当前显示哪一个标签
// mTabhost.setCurrentTab(0);
// 去tabwidget白线,这个对默认主题有效
/*
* mTabhost.setPadding(mTabhost.getPaddingLeft(),
* mTabhost.getPaddingTop(), mTabhost.getPaddingRight(),
* mTabhost.getPaddingBottom() - 5);
*/
}
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.java
package 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个layout
main.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个drawable
tab_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>
6.colors.xml string.xml
colors.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>
android自定义tabhost,tabcontent用intent获得的更多相关文章
- Android 自定义TabHost,TabWidget样式
界面比较简单,要想做得漂亮换几张图片就可以了. 第一步:先在布局(这里用了main.xml创建时自动生成的)里面放上TabHost ,只要将TabHost控件托至屏幕中就可: <?xml ver ...
- Android项目--tabhost
所有牵扯到自定义布局的layout中尽量用RelativeLayout 在通讯录中如果像小米手机的UI那就是viewpager,在这里,我们做成静态的.通过tabhost来做. 1.布局 a) 直接用 ...
- Android之TabHost实现Tab切换
TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情,FrameLayout是Tab内容. 实现方式有两种: 1.继承TabA ...
- android中TabHost和RadioGroup
android底部菜单应用 博客分类: android--UI示例 TabHostMenuRadioGroupButton 在android中实现菜单功能有多种方法. Options Menu:用户 ...
- Android底部TabHost API
今天在项目中遇到了底部TabHost,顺便就写了一个底部TabHost的api继承即可使用非常简单,以下为源代码: 首先是自定义的TabHostActivity,如果要使用该TabHost继承该类即可 ...
- android自定义TabWidget样式
先看看效果图吧,个人觉得图标丑了点,不过还行,自己用PS做的 下面是全部代码和流程,一定要按流程顺序来,不然错误! 1.tabhost.xml <TabHost xmlns:android=&q ...
- Android:TabHost实现Tab切换
TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情,FrameLayout是Tab内容. 实现方式有两种: 1.继承TabA ...
- Android选项卡TabHost方式实现
1.布局XML: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android= ...
- android使用tabhost实现导航
参考 http://blog.csdn.net/xixinyan/article/details/6771341 http://blog.sina.com.cn/s/blog_6b04c8eb0101 ...
随机推荐
- 太过亲密往往不好——用non-member,non-friend替换member函数
在前一篇文章,我们提到,使用private来代替public以提高class的封装性.这一篇文章,我们将对接口发起攻势.首先来个简单的例子. class WebBrowser { public: vo ...
- 对于for循环和while循环,两种形式的优缺点
1.for循环 一般用于知道循环次数,并且for循环可以节省内存以及代码简洁,在循环语句中定义一个局部变量,循环结束后,局部变量就被释放了. ;val<=;val++) { sum+=val; ...
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
XML standalone 定义了外部定义的 DTD 文件的存在性. standalone element 有效值是 yes 和 no. 如下是一个例子: <?xml version=&quo ...
- kafka集群安装,配置
1.安装+配置(集群) 192.168.0.10.192.168.0.11.192.168.0.12(每台服务器kafka+zookeeper) # kafka依赖java环境,需要提前安装好jdk. ...
- opencv-python教程学习系列3-视频操作
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍视频的获取和保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 ...
- mos如何工作参考地址
https://wenku.baidu.com/view/c118c3fb360cba1aa811da9d.html?qq-pf-to=pcqq.c2c
- dubbo监控工具
现在企业使用dubbo技术太普遍,所以dubbo的监控工具也应运而生,而且还很稳定,他就是一个web项目, 部署起来非常简单,下载个项目war包(dubbo-admin-2.5.4-SNAPSHOT. ...
- 51Nod:活动安排问题(区间问题)
X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠). 例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重 ...
- 水题 不要62 HDU 2089
先预处理出所有的数是不是可能拿来用,我的想法是记录1-i这个区间内可用的数为s[i]. 输入a,b.答案就为s[b] - s[a-1]. 贴代码: #include<cstdio> #de ...
- mysql query 条件中为空时忽略
☆. q.ques_group传入为null或''的时候不查询此条件: value AND (q.ques_group = :quesGroup or :quesGroup is null or :q ...