看了网上的的一些资料和android源码之后,总结出自定义Tab的大概实现,记录以备后查。

android中的tab控件显示通过TabHost和TabWidget来实现,在TabHost.TabSpec提供了tab自定义外观的实现方法:

TabSpec android.widget.TabHost.TabSpec.setIndicator(View view);

我们提供自定义的View即可,android源码中默认的view有两种:一种只有TextView,另一种包含ImageView和TextView,看看第二种的布局文件:

        
源文件位于:frameworks/base/core/res/res/layout/tab_indicator.xml中

在这里我们可以增加或者修改控件,或者修改控件的样式,背景色等等。

修改后保存到自己工程的layout目录下,命名为tab_custom_indicator.xml

    
这里我只保留了ImageView,让tab只显示图片


同时在drawable中提供自定义的选择器tab_custom_indicator.xml,让系统在切换不同的tab时可以显示不同的背景:

                                

TabActivity的layout文件为main.xml:

<?xml version="1.0" encoding="utf-8"?>                                            
这里把TabWidget放在下面,主要是为了让tab底部显示(默认的tab是顶部显示的)


布局完成之后,下面是编码部分:

public class MainActivity extends TabActivity {        private static final String TAG = "MainActivity";    private TabWidget tabWidget;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                TabHost tabs = getTabHost();        tabWidget = getTabWidget();                TabHost.TabSpec spec = tabs.newTabSpec("tab0");        Intent intent = new Intent().setClass(this, FirstActivity.class);        spec.setIndicator(createIndicatorView());        spec.setContent(intent);        tabs.addTab(spec);                spec = tabs.newTabSpec("tab1");        intent = new Intent().setClass(this, SecondActivity.class);        spec.setIndicator(createIndicatorView());        spec.setContent(intent);        tabs.addTab(spec);                tabs.setCurrentTab(0);//启动时显示第一个标签页    }        private View createIndicatorView() {        View tabIndicator = (RelativeLayout)LayoutInflater.from(this).inflate(                R.layout.tab_indicator, tabWidget, false);        return tabIndicator;    }}

更多相关文章

  1. Android 控件使用之SlidingDrawer
  2. Android利用drawable文件夹自定义控件背景、样式
  3. android Service Activity三种交互方式(付源码)
  4. Android学习-五布局之相对布局
  5. android控件布局
  6. [Android]笔记7-RelativeLayout布局
  7. Android的四种基本布局
  8. 2.3.1TextView控件
  9. Android 统计图表引擎AChartEngine(四) - 源码示例 嵌入Acitivit

随机推荐

  1. 第十三篇 Android(安卓)系统电话管理机制
  2. Android静态安全检测 -> Intent Scheme U
  3. Android(安卓)activity之间的跳转和传参
  4. Android(安卓)UI设计总结
  5. android 6.0 logcat机制(二)logcat从logd中
  6. DialogFragment的使用
  7. Android获取系统播放音乐信息
  8. Android(安卓)Intent详解
  9. android传感器学习之获取传感器的值
  10. windows通过git获取 android 源代码