FragmentTabHost+ViewPager实现底部按钮

  1 package com.example.fragmenttabdemo;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import android.annotation.SuppressLint;
  7 import android.os.Bundle;
  8 import android.support.v4.app.Fragment;
  9 import android.support.v4.app.FragmentActivity;
 10 import android.support.v4.app.FragmentManager;
 11 import android.support.v4.app.FragmentPagerAdapter;
 12 import android.support.v4.app.FragmentTabHost;
 13 import android.support.v4.view.ViewPager;
 14 import android.support.v4.view.ViewPager.OnPageChangeListener;
 15 import android.view.LayoutInflater;
 16 import android.view.View;
 17 import android.view.ViewGroup;
 18 import android.widget.ImageView;
 19 import android.widget.TabHost.OnTabChangeListener;
 20 import android.widget.TabHost.TabSpec;
 21 import android.widget.TabWidget;
 22 import android.widget.TextView;
 23
 24 @SuppressLint("InflateParams")
 25 public class MainActivity extends FragmentActivity {
 26     // 定义FragmentTabHost对象
 27     private FragmentTabHost mTabHost;
 28     // 定义一个布局
 29     private LayoutInflater layoutInflater;
 30     // 定义数组来存放Fragment界面
 31     @SuppressWarnings("rawtypes")
 32     private Class fragmentArray[] = { FragmentPage1.class, FragmentPage1.class,
 33             FragmentPage1.class, FragmentPage1.class, FragmentPage1.class };
 34     // 定义数组来存放按钮图片
 35     private int mImageViewArray[] = { R.drawable.ic_launcher,
 36             R.drawable.ic_launcher, R.drawable.ic_launcher,
 37             R.drawable.ic_launcher, R.drawable.ic_launcher };
 38     // Tab选项卡的文字
 39     private String mTextviewArray[] = { "首页", "消息", "好友", "广场", "更多" };
 40     private ViewPager vp;
 41     private List<Fragment> list = new ArrayList<Fragment>();
 42
 43     public void onCreate(Bundle savedInstanceState) {
 44         super.onCreate(savedInstanceState);
 45         setContentView(R.layout.activity_main);
 46         initView();
 47         initPager();
 48     }
 49
 50     /**
 51      * 初始化组件
 52      */
 53     private void initView() {
 54         vp = (ViewPager) findViewById(R.id.pager);
 55         vp.setOnPageChangeListener(new ViewPagerListener());
 56         // MyAdapter adapter = new MyAdapter();
 57         // vp.setAdapter(adapter);
 58         // 实例化布局对象
 59         layoutInflater = LayoutInflater.from(this);
 60         // 实例化TabHost对象,得到TabHost
 61         mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
 62         // 得到对象后,初始化
 63         // mTabHost.getTabWidget().setDividerDrawable(android.R.color.transparent);
 64         mTabHost.setup(this, getSupportFragmentManager(), R.id.pager);
 65         mTabHost.setOnTabChangedListener(new TabHostListener());
 66         // 得到fragment的个数
 67         int count = fragmentArray.length;
 68
 69         for (int i = 0; i < count; i++) {
 70             // 为每一个Tab按钮设置图标、文字和内容
 71             TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i])
 72                     .setIndicator(getTabItemView(i));
 73             // 将Tab按钮添加进Tab选项卡中
 74             mTabHost.addTab(tabSpec, fragmentArray[i], null);
 75             mTabHost.setTag(i);
 76             mTabHost.getTabWidget().setDividerDrawable(
 77                     android.R.color.transparent);
 78             // 设置Tab按钮的背景
 79             // mTabHost.getTabWidget().getChildAt(i)
 80             // .setBackgroundResource(R.drawable.selector_tab_background);
 81         }
 82     }
 83
 84     //初始化viewpager
 85     private void initPager() {
 86         FragmentPage1 p1 = new FragmentPage1();
 87         FragmentPage1 p2 = new FragmentPage1();
 88         FragmentPage1 p3 = new FragmentPage1();
 89         FragmentPage1 p4 = new FragmentPage1();
 90         FragmentPage1 p5 = new FragmentPage1();
 91         list.add(p1);
 92         list.add(p2);
 93         list.add(p3);
 94         list.add(p4);
 95         list.add(p5);
 96         vp.setAdapter(new MyAdapter(getSupportFragmentManager()));
 97     }
 98
 99     /**
100      * 给Tab按钮设置图标和文字
101      */
102     private View getTabItemView(int index) {
103         View view = layoutInflater.inflate(R.layout.btn_bottom, null);
104         ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
105         imageView.setImageResource(mImageViewArray[index]);
106         TextView textView = (TextView) view.findViewById(R.id.textview);
107         textView.setText(mTextviewArray[index]);
108         return view;
109     }
110
111     private class TabHostListener implements OnTabChangeListener {
112         @Override
113         public void onTabChanged(String tabId) {
114             int position = mTabHost.getCurrentTab();
115             vp.setCurrentItem(position);
116         }
117     }
118
119     class MyAdapter extends FragmentPagerAdapter {
120
121         public MyAdapter(FragmentManager fm) {
122             super(fm);
123             // TODO Auto-generated constructor stub
124         }
125
126         @Override
127         public Fragment getItem(int arg0) {
128             return list.get(arg0);
129         }
130
131         @Override
132         public int getCount() {
133             return list.size();
134         }
135
136     }
137
138     class ViewPagerListener implements OnPageChangeListener {
139
140         public void onPageScrollStateChanged(int arg0) {
141
142         }
143
144         public void onPageScrolled(int arg0, float arg1, int arg2) {
145
146         }
147
148         public void onPageSelected(int index) {
149             TabWidget widget = mTabHost.getTabWidget();
150             int oldFocusability = widget.getDescendantFocusability();
151             widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
152             mTabHost.setCurrentTab(index);
153             widget.setDescendantFocusability(oldFocusability);
154         }
155     }
156 }
时间: 2024-07-28 23:25:26

FragmentTabHost+ViewPager实现底部按钮的相关文章

首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment

前言 Android开发中使用底部菜单栏的频次非常高,主要的实现手段有以下: - TabWidget - 隐藏TabWidget,使用RadioGroup和RadioButton - FragmentTabHost - 5.0以后的TabLayout - 最近推出的 Bottom navigation 今天带大家来探索下如何用Fragment+FragmentTabHost++ViewPager 实现底部菜单栏 目录 总体设计思路 Fragment:存放不同选项的页面内容 FragmentTab

Android 底部按钮BottomNavigationView + Fragment + viewPager 的使用(一)

实现的效果,左右滑动,底部栏跟着滑动,中间加的是分帧的页面        上代码:主页面activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=&

我的长大app开发教程第二弹:完成ContentFragment底部按钮

在开始之前,先上一张效果图 突然发现有点知乎的味道...的确..知乎灰#989898,知乎蓝15,136,235(逃.... 1.学P图 想我大一的时候也用过不少Adobe的软件,昨天重新打开我的Photoshop,电脑提示缺少什么.dll文件,最后弄了一上午,是因为vc2012的运行库出了问题,最后发现一个软件特别好用:DirectX Repair,可以完美解决.dll丢失的问题. UI素材我是在google的icons素材库下载的https://github.com/google/mater

iOS开发&gt;学无止境 - UITablView上下滑动控制底部按钮的出现和消失

今天我们一起来做一个好玩的功能,通过UITablView上下滑动控制底部按钮的出现和消失.先来看看效果: 需求分析 要做一个这样的功能,对你来说应该不难,实现的方式也有很多.我们来分析一下要实现那几个小功能点: UITablView向上滑动,底部按钮消失 UITablView向下滑动,底部按钮出现 UITablView滑动到底部,底部按钮出现 主要就是这三个小功能点.那么很简单,我们只需要判断UITablView是往上滑动,还是往下滑动,以及判断UITablView是否滑动到底部即可. 代码实现

Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换

Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换 Android学习笔记:TabHost 和 FragmentTabHost

Android 利用ViewPager实现底部圆点导航左右滑动效果以及Fragment页面切换

上一篇博文我们介绍了利用ViewPager和Fragment实现顶部滑块左右滑动效果,具体参考(http://blog.csdn.net/a123demi/article/details/39480385). 而本篇博文将实例讲解利用ViewPager实现底部圆点导航左右滑动效果,以及被滑动界面实现监听事件,同时通过Fragment实现页面的切换. 对于该效果的实现,需要实现以下几个问题: 1. 底部圆点加载和实现方法? 2. 怎样实现左右滑动效果? 3. 被滑动页面,怎样实现监听事件? 4.

flex布局,input点击软键盘激活,底部按钮上移

安卓手机的问题,原本表单没有超出一屏的时候,上移的现象也是存才的,只是需要滑动body才能看得到,现在,超出一屏了,现象就很明显了 body明显上移: 点击input修改价格: 软键盘出现: 先尝试了这样的方法: http://blog.csdn.net/u010394015/article/details/72781377 给底部按钮position:relative 中间内容,其中是有滚动条,flex布局,container{height:100%;} 衍生: 点击input被键盘挡住 测试

基于ViewPagerIndicator的UnderlinePageIndicator,ViewPager选项卡底部滑块衬线滑动控件

<基于ViewPagerIndicator的UnderlinePageIndicator,ViewPager选项卡底部滑块衬线滑动控件> 基于github上的第三方开源的ViewPagerIndicator的UnderlinePageIndicator( 附:地址),自己写的一个在选项卡底部有衬线的滑动控件. 控件效果图如图所示. 有一个特别的效果是:头部的选项卡在ViewPager切换过程中,底部的滑块也随之动态渐渐滑动过渡. 代码: MainActivity.java package zh

vue 手机键盘把底部按钮顶上去

背景:在写提交订单页面时候,底部按钮当我点击输入留言信息的时候,底部提交订单按钮被输入法软键盘顶上去遮挡住了. 实现原理:当页面高度发生变化的时候改变底部button的样式,没点击前button在底部固定position: fixed;当我点击input的时候样式变成position: static!important; 一开始的解决方案是通过input的聚焦和失焦,但是有个问题,当我点击input的时候聚焦,再点击键盘上的隐藏按钮时就没办法恢复原来的fixed. 原来的样式主要是positio