MainActivity
package com.yzw.android.fragmenttabhost; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTabHost; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.TabHost.TabSpec; /* 自定义TabHost */ public class MainActivity extends FragmentActivity { // 定义FragmentTabHost对象 private FragmentTabHost mTabHost; //定义一个布局 private LayoutInflater layoutInflater; //定义数组用来存放Fragment的界面 private Class fragmentArray[]={Activity1.class,Activity2.class,Activity3.class,Activity4.class}; //定义数组用来存放image按钮 private int imageArray[]={R.drawable.tab_home_btn,R.drawable.tab_message_btn,R.drawable.tab_square_btn, R.drawable.tab_more_btn}; //Tab选项卡的文字 private String mTextviewArray[] = {"快递", "收藏", "网点", "更多"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } /** * 初始化组件 */ private void initView(){ //实例化布局对象 layoutInflater=LayoutInflater.from(this); //实例化TabHost对象,得到TabHost mTabHost=(FragmentTabHost) findViewById(android.R.id.tabhost); mTabHost.setup(this,getSupportFragmentManager(),R.id.realcontent) ; //得到fragment的个数 int count = fragmentArray.length; for(int i = 0; i < count; i++){ //为每一个Tab按钮设置图标、文字和内容 TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i)); //将Tab按钮添加进Tab选项卡中 mTabHost.addTab(tabSpec, fragmentArray[i], null); //设置Tab按钮的背景 mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background); } } /** * 给Tab按钮设置图标和文字 */ private View getTabItemView(int index){ View view = layoutInflater.inflate(R.layout.tab_item_view, null); ImageView imageView = (ImageView) view.findViewById(R.id.imageview); imageView.setImageResource(imageArray[index]); TextView textView = (TextView) view.findViewById(R.id.textview); textView.setText(mTextviewArray[index]); return view; } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.yzw.android.fragmenttabhost.MainActivity"> <!-- 这个布局决定了标签在上面还是在下面--> <FrameLayout android:id="@+id/realcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@mipmap/tabhost_bg" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> </android.support.v4.app.FragmentTabHost> </LinearLayout>
再定义出四个Activity1,Activity2,Activity3,Activity4
代码都是一样的如下:
package com.yzw.android.fragmenttabhost; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * Created by Administrator on 2016/7/3. */ public class Activity1 extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.activity1,container,false); return view; } }xml文件也是一样的,a ctivity1.xml,activity2.xml,activity3.xml,activity4.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:background="#A020F0" android:gravity="center" android:textSize="30sp" android:text="我是1"/> </LinearLayout>
用法就是这么简单
代码下载:
https://github.com/yzwty/FragmentTabhost
演示的效果图就不贴了,下面贴下本人上架项目的图
源码地址:https://github.com/yzwty/fdkdzs
这是早期代码用eclipse写的一个快递查询软件,有好多学习的知识点
再给大家介绍一款微信UI设计的代码,比较详细的讲解了
Android ActionBar的使用。
同时使用 ViewPager, PagerSlidingTabStrip, SwipeRefreshLayout
ViewPager是v4包里提供的,可以通过PagerAdapter根据左右的滑动产生不同的page
PagerSlidingTabStrip作用是根据ViewPager生成对应的tab 在页面切换时有相应的动画效果
PagerSlidingTabStrip下载地址
SwipeRefreshLayout同样是v4包里的,它提供了下拉刷新的功能以及对应
的动画效果,使用起来非常简便。但是其中只能包含一个View,且该View必须是可滑动的(不可滑动的话动画显示有bug),如ListView。源码地址:https://github.com/yzwty/WeiXinUI