文档章节

Linearlayout+ViewPager导航

wuya357
 wuya357
发布于 2016/05/10 11:05
字数 750
阅读 19
收藏 0

MainActivity的代码如下:

 

package com.saxon.viewpagerdemo;


import java.util.ArrayList;
import java.util.List;


import com.saxon.viewpagerdemo.fragment.CategoryFragment;
import com.saxon.viewpagerdemo.fragment.FindFragment;
import com.saxon.viewpagerdemo.fragment.HomeFragment;
import com.saxon.viewpagerdemo.fragment.MineFragment;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;

public class MainActivity extends ActionBarActivity {
    private LinearLayout[] linearlayouts;
    private int count;
    private ViewPager vp_main;
    private LinearLayout linearlayout_main;
    private List<Fragment> list = new ArrayList<Fragment>();
    private MyFragmentAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initViewPager();
        initLinearLayout();
    }

    private void initLinearLayout() {
        count = linearlayout_main.getChildCount();
        linearlayouts = new LinearLayout[count];
        for (int i = 0; i < count; i++) {
            LinearLayout linearLayout = (LinearLayout) linearlayout_main
                    .getChildAt(i);
            linearlayouts[i] = linearLayout;
            linearlayouts[i].setEnabled(true);
            linearlayouts[i].setSelected(false);
            linearlayouts[i].setTag(i);
            linearlayouts[i].setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View arg0) {
                    vp_main.setCurrentItem((Integer) arg0.getTag());
                    
                }
            });
            
            
        }
        linearlayouts[0].setEnabled(false);
        linearlayouts[0].setSelected(true);
        
    }

    private void initViewPager() {
        list.add(new HomeFragment());
        list.add(new CategoryFragment());
        list.add(new FindFragment());
        list.add(new MineFragment());
        adapter = new MyFragmentAdapter(getSupportFragmentManager());
        vp_main.setAdapter(adapter);
        vp_main.setOnPageChangeListener(new OnPageChangeListener() {
            
            @Override
            public void onPageSelected(int arg0) {
                for (int i = 0; i < count; i++) {

                    linearlayouts[i].setEnabled(true);
                    linearlayouts[i].setSelected(false);
                }
                linearlayouts[arg0].setEnabled(false);
                linearlayouts[arg0].setSelected(true);
            }
            
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub
                
            }
        });
        
        
    }

    private void initView() {
        vp_main = (ViewPager) findViewById(R.id.vp_main);
        linearlayout_main = (LinearLayout) findViewById(R.id.linearlayout_main);
        
    }
    class MyFragmentAdapter extends FragmentPagerAdapter{
        private FragmentManager manager;
        private FragmentTransaction fragmentTransaction;
        public MyFragmentAdapter(FragmentManager fm) {
            super(fm);
            this.manager = fm;
        }

        @Override
        public Fragment getItem(int arg0) {
            // TODO Auto-generated method stub
            return list.get(arg0);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // TODO Auto-generated method stub
            super.instantiateItem(container, position);
            Fragment fragment = list.get(position);
            manager.beginTransaction().show(fragment).commit();
            return fragment;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // TODO Auto-generated method stub
            fragmentTransaction = manager.beginTransaction();
            fragmentTransaction.hide(list.get(position)).commit();
        }
        
    }


}
     

布局文件activity_main.xmlx的代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

   <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >
    </android.support.v4.view.ViewPager>
<View 
    android:layout_width="match_parent"
    android:layout_height="1px"
    android:background="#bebebe"/>
    <LinearLayout 
        android:id="@+id/linearlayout_main"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        >
         <LinearLayout 
             android:id="@+id/ll_home"
            android:gravity="center_horizontal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView 
                android:layout_marginTop="10dp"
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:src="@drawable/tab_home_selector"
                />
            <TextView
                android:layout_marginTop="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:textColor="@color/tab_text_selector"
                android:text="首页"/>
        </LinearLayout>
       <LinearLayout 
           android:id="@+id/ll_cate"
            android:gravity="center_horizontal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView 
                android:layout_marginTop="10dp"
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:src="@drawable/tab_category_selector"
                />
            <TextView
                android:layout_marginTop="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:textColor="@color/tab_text_selector"
                android:text="分类"/>
        </LinearLayout>
       <LinearLayout 
           android:id="@+id/ll_find"
            android:gravity="center_horizontal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView 
                android:layout_marginTop="10dp"
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:src="@drawable/tab_find_selector"
                />
            <TextView
                android:layout_marginTop="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                  android:textColor="@color/tab_text_selector"
                android:text="发现"/>
        </LinearLayout>
        <LinearLayout 
            android:id="@+id/ll_mine"
            android:gravity="center_horizontal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView 
                android:layout_marginTop="10dp"
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:src="@drawable/tab_mine_selector"
                />
            <TextView
                android:layout_marginTop="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:textSize="10sp"
                 android:textColor="@color/tab_text_selector"
                android:text="我"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

 

 

  tab_text_selector.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:color="#46BF1A" android:state_selected="true"/>
   <item android:color="#ABABAB"/>

</selector>

 

tab_home_selector.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/menu_home_first_on" android:state_selected="true"></item>
    <item android:drawable="@drawable/menu_home_first_off"></item>
</selector>
同理你可以分别写出 tab_categroy_selector.xml;tab_find_selector.xml;tab_mine_selector.xml;

Fragmemt的布局文件你可以随便写写就行了,希望对您有所帮助;

效果图如下:

 

 

 

 

 

© 著作权归作者所有

wuya357
粉丝 0
博文 10
码字总数 6363
作品 0
武汉
程序员
私信 提问
分享简单而实用的网页菜单导航【提供源码】

菜单导航对于一个网站来说非常重要,对于浏览者来说,导航设计的好坏将直接影响用户的体验。这里,我们为网页开发者提供了一系列简单但是实用的导航菜单例子及其源码,仅供参考和学习。 CSS3...

tp_wire
2012/06/14
438
1
超实用!网站导航栏设计形式总结

导航对于一个网站来说,起到重要的引导作用。一个优秀的导航设计可以让用户快速的找到所需 ,让用户清晰明了的了解到网站的结构框架,起到重要的指引作用。下面跟大家分享下常用的几种网页导...

郑乔尹在旅游
2017/12/28
0
0
分享50个使用非比寻常导航菜单设计的创20111227creati意网站

日期:2011/12/27 来源:GBin1.com 导航在网站设计中起着举足轻重的作用。一个设计简易的导航相对于复杂的导航将能够很好的帮助用户探索网站内容。无论从网站设计功能的任何角度来看,导航都...

gbin1
2011/12/28
1K
4
iOS开发笔记 | 导航栏和BaseController的封装

关于导航栏,我的处理思路是:完全自定义。 也就是用自定view代替系统的导航栏。 为什么这么做?理由有两点: 系统的导航栏是真难用; 灵活。想放什么控件就放什么控件、想怎么放就怎么放。 ...

无夜之星辰
05/03
0
0
iOS透明导航栏的平滑过渡(进阶版)

引 如我在传送门:iOS导航栏切换界面时隐藏和显示中所说,现在很多App的个人中心模块都是不保留导航栏的,会直接使导航栏透明,比如做的很好的QQ个人信息界面: 为什么说QQ做的很好呢?既然有...

cloudox_
2017/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
5
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
6
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
4
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部