zoukankan      html  css  js  c++  java
  • Android之底部TabHost实现

    TabHost默认情况下是显示在屏幕顶部,但是很多情况下我们希望它显示在底部,ok,直接上代码

    第一步:首先是布局文件

    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:orientation="vertical"
            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:layout_weight="1" />
    
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true" />
        </LinearLayout>
    
    </TabHost>
    

    第二步:在Activity中使用TabHost,注意,我创建了三个activity用来跳转,每个activity显示一张图片,这里只给出使用TabHost的activity代码

    剩下的三个测试用的activity,大家自由发挥了。

    package com.front.tabdemo;
    
    import android.app.TabActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TabHost;
    import android.widget.TabHost.OnTabChangeListener;
    import android.widget.TabWidget;
    
    public class MainActivity extends TabActivity {
    
    	private TabHost host;
    	private TabWidget widget;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		host = this.getTabHost();
    
    		Intent it_one = new Intent(this, activity_one.class);
    		TabHost.TabSpec one_spec = host.newTabSpec("第一张");
    		one_spec.setContent(it_one);
    		one_spec.setIndicator("第一张");
    		host.addTab(one_spec);
    
    		Intent it_two = new Intent(this, activity_two.class);
    		TabHost.TabSpec two_spec = host.newTabSpec("第二张");
    		two_spec.setContent(it_two);
    		two_spec.setIndicator("第二张");
    		host.addTab(two_spec);
    
    		Intent it_three = new Intent(this, activity_three.class);
    		TabHost.TabSpec three_spec = host.newTabSpec("第三张");
    		three_spec.setContent(it_three);
    		three_spec.setIndicator("第三张");
    		host.addTab(three_spec);
    
    		widget = host.getTabWidget();
    		// 初始化各个标签的背景
    		setTabBackground();
    
    		// 给host添加标签改变事件,点击相应的标签时改变其背景
    		host.setOnTabChangedListener(new OnTabChangeListener() {
    
    			public void onTabChanged(String tabId) {
    				// TODO Auto-generated method stub
    				setTabBackground();
    			}
    		});
    
    	}
    
    	public void setTabBackground() {
    		for (int i = 0; i < widget.getChildCount(); i++) {
    			View view = widget.getChildAt(i);
    			if (host.getCurrentTab() == i) {
    				view.setBackgroundResource(R.drawable.number_bg_pressed);
    			} else {
    				view.setBackgroundResource(R.drawable.number_bg);
    			}
    		}
    
    	}
    
    }
    

     ok,这样显示在底部的TabHost就完成了,效果图如下:

  • 相关阅读:
    Masonry代码自动布局的简单使用。
    iOS app 如何添加引导页。
    iOS应用程序发布AppStore及更新流程
    AFN的简单二次封装
    自定义tabbar(纯代码)
    自定义tabbar(storyBoard)
    GitHub tag的使用
    cvGetSize与cvSize的区别
    越界访问,调试真的很头疼
    Hadoop对文本文件的快速全局排序
  • 原文地址:https://www.cnblogs.com/all88/p/3016326.html
Copyright © 2011-2022 走看看