android Fragment TabHost 的使用
2016-03-09 14:40
627 查看
下面直接上代码了,注释很全,看过我前2篇文章的朋友,肯定秒懂的,哈哈~
activity_main.xml(主布局文件)
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6 7 <!-- 存放主要页面内容 --> 8 9 <FrameLayout 10 android:id="@+id/maincontent" 11 android:layout_width="fill_parent" 12 android:layout_height="0dp" 13 android:layout_weight="1" > 14 </FrameLayout> 15 16 <!-- 底层菜单 --> 17 18 <android.support.v4.app.FragmentTabHost 19 android:id="@android:id/tabhost" 20 android:layout_width="fill_parent" 21 android:layout_height="wrap_content" 22 android:background="@drawable/maintab_toolbar_bg" > 23 24 <FrameLayout 25 android:id="@android:id/tabcontent" 26 android:layout_width="0dp" 27 android:layout_height="0dp" 28 android:layout_weight="0" > 29 </FrameLayout> 30 </android.support.v4.app.FragmentTabHost> 31 32 </LinearLayout>
fragment.xml(由于只有文字不同,这里只给出一个)
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 > 6 7 8 <TextView 9 android:id="@+id/text" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:layout_centerInParent="true" 13 android:text="我是第一个Fragment" 14 android:textSize="20dp" 15 /> 16 17 18 </RelativeLayout>
tabcontent.xml(具体底部菜单详细布局)
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:gravity="center_horizontal" 6 android:orientation="vertical" > 7 8 <ImageView 9 android:id="@+id/image" 10 android:layout_height="wrap_content" 11 android:layout_width="wrap_content" 12 /> 13 <TextView 14 android:id="@+id/text" 15 android:padding="2dp" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:textColor="@android:color/white" 19 /> 20 21 22 </LinearLayout>
bt_selector.xml(底部菜单点击背景)
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <item android:drawable="@drawable/home_btn_bg" android:state_pressed="true"></item> 5 <item android:drawable="@drawable/home_btn_bg" android:state_selected="true"></item> 6 7 </selector>
bt_home_selector.xml(底部菜单按钮效果)
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <item android:drawable="@drawable/icon_home_sel" android:state_selected="true"></item> 5 <item android:drawable="@drawable/icon_home_nor"></item> 6 7 </selector>
FragmentPage1-FragmentPage5.java
1 package com.example.newtabhosttest; 2 3 import android.os.Bundle; 4 import android.support.annotation.Nullable; 5 import android.support.v4.app.Fragment; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 10 public class FragmentPage1 extends Fragment{ 11 @Override 12 public View onCreateView(LayoutInflater inflater, 13 @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 14 return inflater.inflate(R.layout.fragment1, null); 15 } 16 17 }
MainActivity.java(主代码)
1 package com.example.newtabhosttest; 2 3 import android.os.Bundle; 4 import android.support.v4.app.FragmentActivity; 5 import android.support.v4.app.FragmentTabHost; 6 import android.view.View; 7 import android.widget.ImageView; 8 import android.widget.TabHost.TabSpec; 9 import android.widget.TextView; 10 11 public class MainActivity extends FragmentActivity { 12 13 private FragmentTabHost fragmentTabHost; 14 private String texts[] = { "首页", "消息", "好友", "广场", "更多" }; 15 private int imageButton[] = { R.drawable.bt_home_selector, 16 R.drawable.bt_message_selector, R.drawable.bt_selfinfo_selector,R.drawable.bt_square_selector ,R.drawable.bt_more_selector}; 17 private Class fragmentArray[] = {FragmentPage1.class,FragmentPage2.class,FragmentPage3.class,FragmentPage4.class,FragmentPage5.class}; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 24 // 实例化tabhost 25 fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 26 fragmentTabHost.setup(this, getSupportFragmentManager(), 27 R.id.maincontent); 28 29 for (int i = 0; i < texts.length; i++) { 30 TabSpec spec=fragmentTabHost.newTabSpec(texts[i]).setIndicator(getView(i)); 31 32 fragmentTabHost.addTab(spec, fragmentArray[i], null); 33 34 //设置背景(必须在addTab之后,由于需要子节点(底部菜单按钮)否则会出现空指针异常) 35 fragmentTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.bt_selector); 36 } 37 38 } 39 40 private View getView(int i) { 41 //取得布局实例 42 View view=View.inflate(MainActivity.this, R.layout.tabcontent, null); 43 44 //取得布局对象 45 ImageView imageView=(ImageView) view.findViewById(R.id.image); 46 TextView textView=(TextView) view.findViewById(R.id.text); 47 48 //设置图标 49 imageView.setImageResource(imageButton[i]); 50 //设置标题 51 textView.setText(texts[i]); 52 return view; 53 } 54 55 }
相关文章推荐
- android 手势解锁的实现
- Android Studio使用Gradle进行多渠道打包
- 【android】垃圾回收机制
- android assets 下文件中文乱码解决
- Mac安装Genymotion
- Android不透明度16进制值
- 【Android 基础】Animation 动画介绍和实现
- Android Studio selector 报 Element selector must be declared 的问题
- Android Volley完全解析(一),初识Volley的基本用法
- android取图片视频的缩略图
- Android 编程下 AnimationDrawable (动画)的实现
- Android 4.4 沉浸式透明状态栏与导航栏
- android开发常见编程错误总结
- android柱状progressbar
- android 仿美团、大众点评滑动viewpager菜单栏
- Android实现分享文本和图片小功能
- Android从xml加载到View对象过程解析
- android解析xml一直报错org.xmlpull.v1.XmlPullParserException
- 【Android】如何使用安卓的logcat『整理』
- Android加载Gif和ImageView的通用解决方案:android-gif-drawable:GifTextView(2)