自定义TabHost,TabWidget样式

先看效果:

        京东商城底部菜单栏

      新浪微博底部菜单栏

本次学习效果图:

  

第一,主布局文件(启动页main.xml,位于res/layout目录下)代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:id="@+id/tabhost">
 6
 7     <LinearLayout
 8         android:id="@+id/linear1"
 9         android:layout_width="fill_parent"
10         android:layout_height="fill_parent"
11         android:orientation="vertical">
12         <TabWidget
13             android:id="@android:id/tabs"
14             android:layout_width="fill_parent"
15             android:layout_height="wrap_content"></TabWidget>
16         <FrameLayout
17             android:id="@android:id/tabcontent"
18             android:layout_width="fill_parent"
19             android:layout_height="fill_parent">
20             <LinearLayout
21                 android:id="@+id/tab1"
22                 android:layout_width="fill_parent"
23                 android:layout_height="fill_parent"
24                 android:orientation="vertical">
25                 <TextView
26                     android:id="@+id/tab1_txt"
27                     android:layout_width="fill_parent"
28                     android:layout_height="fill_parent"
29                     android:gravity="center"
30                     android:text="你"/>
31             </LinearLayout>
32             <LinearLayout
33                 android:id="@+id/tab2"
34                 android:layout_width="fill_parent"
35                 android:layout_height="fill_parent"
36                 android:orientation="vertical">
37                 <TextView
38                     android:id="@+id/tab2_txt"
39                     android:layout_width="fill_parent"
40                     android:layout_height="fill_parent"
41                     android:gravity="center"
42                     android:text="我"/>
43             </LinearLayout>
44             <LinearLayout
45                 android:id="@+id/tab3"
46                 android:layout_width="fill_parent"
47                 android:layout_height="fill_parent"
48                 android:orientation="vertical">
49                 <TextView
50                     android:id="@+id/tab3_txt"
51                     android:layout_width="fill_parent"
52                     android:layout_height="fill_parent"
53                     android:gravity="center"
54                     android:text="他"/>
55             </LinearLayout>
56             <LinearLayout
57                 android:id="@+id/tab4"
58                 android:layout_width="fill_parent"
59                 android:layout_height="fill_parent"
60                 android:orientation="vertical">
61                 <TextView
62                     android:id="@+id/tab4_txt"
63                     android:layout_width="fill_parent"
64                     android:layout_height="fill_parent"
65                     android:gravity="center"
66                     android:text="我们"/>
67             </LinearLayout>
68         </FrameLayout>
69     </LinearLayout>
70 </TabHost>

第二,创建显示此TabWidget的布局tabmini.xml(位于res/layout目录下)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="wrap_content"
 5     android:paddingTop="5dp"
 6     android:paddingLeft="5dp"
 7     android:paddingRight="5dp"
 8     android:background="#8C8E8C" >
 9
10     <TextView
11         android:id="@+id/tab_label"
12         android:layout_width="fill_parent"
13         android:layout_height="wrap_content"
14         android:layout_centerInParent="true"
15         android:gravity="center"
16         android:textColor="#000000"
17         android:textStyle="bold"
18         android:background="@drawable/tabmini"/>
19 </RelativeLayout>

第三,在drawable里面创建一个selector,命名tabmini.xml,用来点击TabHost的一个tab时TextView的变化

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
3     <item
4         android:state_selected="true"
5         android:drawable="@drawable/add_managebg_down2"/>
6     <item
7         android:state_selected="false"
8         android:drawable="@drawable/add_managebg2"/>
9 </selector>

第四,java代码,在Activity里实现TabHost

 1 package com.example.androidtest_9_5_4_meihuatubiao;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.widget.TabHost;
 8 import android.widget.TextView;
 9
10 public class Main extends Activity {
11     @Override
12     protected void onCreate(Bundle savedInstanceState){
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.main);
15
16         View niTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);
17         TextView niTxt=(TextView)niTab.findViewById(R.id.tab_label);
18         niTxt.setText("ni");
19
20         View woTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);
21         TextView woTxt=(TextView)woTab.findViewById(R.id.tab_label);
22         woTxt.setText("wo");
23
24         View taTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);
25         TextView taTxt=(TextView)taTab.findViewById(R.id.tab_label);
26         taTxt.setText("ta");
27
28         View weTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);
29         TextView weTxt=(TextView)weTab.findViewById(R.id.tab_label);
30         weTxt.setText("we");
31
32         TabHost tabs=(TabHost)findViewById(R.id.tabhost);
33         tabs.setup();
34
35         tabs.addTab(tabs.newTabSpec("niTab").setContent(R.id.tab1).setIndicator(niTab));
36         tabs.addTab(tabs.newTabSpec("woTab").setContent(R.id.tab2).setIndicator(woTab));
37         tabs.addTab(tabs.newTabSpec("taTab").setContent(R.id.tab3).setIndicator(taTab));
38         tabs.addTab(tabs.newTabSpec("weTab").setContent(R.id.tab4).setIndicator(weTab));
39     }
40 }

时间: 2024-10-13 12:44:20

自定义TabHost,TabWidget样式的相关文章

Android开发之自定义TabHost文字及背景(源代码分享)

使用TabHost 可以在一个屏幕间进行不同版面的切换,而系统自带的tabhost界面较为朴素,我们应该如何进行自定义修改优化呢 MainActivity的源代码 package com.dream.ledong; import android.app.TabActivity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Gr

android--解决方案--自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)

本文主要解决自定义tabhost的实现,以及集成通过代码动态添加选项卡功能.选项卡水平自动滑动功能.以及通过手势来切换选项卡功能. 下面跟我一起来完成这个完美的解决方案: 1.定义tabwidget选项卡的布局:tab_button.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r

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"   

Android自定义进度条样式

最近在做一个widget,上面需要一个progressbar,产品经理和设计师给出来的东西是要实现一个圆角的progress和自定义的颜色,研究一小下,分享出来给大家哦. 测试于:Android4.0+ 操作步骤: 1.创建你的layout文件引用progressbar如下,标红处引用你自定的样式: <ProgressBar android:id="@+id/progressDownload" style="?android:attr/progressBarStyleH

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

jQuery Validate 表单验证插件----自定义校验结果样式

一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script> <script src="lib/jquery.validate.js" type="text/javascript"

WinForm自定义ListBox显示样式

WinForm自定义ListBox显示样式,多列分不同颜色显示,效果如下图: 首先向winForm窗口拖入一个ListBox控件,命名为lstConsole,同时将DrawMode设置为:OwnerDrawFixed,这里一定要注意否则我们接下来的工作都不会起作用. 然后我们来自定义ListBoxItem,代码如下: public class ColoredListBoxItem { /// <summary> /// creates a new ColoredListBoxItem ///

jQuery 自定义网页滚动条样式插件 mCustomScrollbar 的介绍和使用方法

如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScrollPane,大家见过的可能比较多,但是这个插件太过于古老而且功能不强大,效果在几年前非常不错,但是放在现在就不好说了.所以我选择了后者:mCustomScrollbar.下图是两者官方示例的简单对比: 本文就是介绍如何使用 mCustomScrollbar 这个插件,大部分的内容是翻译自 mCus

自定义的ChecBox 样式

.xml里面 <CheckBox android:id="@+id/checkBox1" android:layout_width="29dp" android:layout_height="29dp" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:la

CSS自定义鼠标指针样式

原文链接: http://davidwalsh.name/css-custom-cursorDemo地址: http://davidwalsh.name/demo/css-custom-cursor.php原文日期: 2014-09-16翻译日期: 2014-09-17翻译人员: 铁锚 还记得Web 1.0时代的那些苦逼岁月吗? 你想尽一切办法来优化你的网站. 还要饱受IE6惨无人道的虐待,举个栗子, IE中那些害死人不偿命的滚动条, 我一直记得第三方类库 CometCursor. CometC