zoukankan      html  css  js  c++  java
  • Android ViewPager实现选项卡切换

    ViewPager实现选项卡切换,效果图如下:

    步骤一:这里使用兼容低版本的v4包进行布局,这里eclipse没有输入提示,所以要手动输入,文件名称“activity_main.xml”

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     tools:context=".MainActivity" >
     6 
     7 
     8 
     9    <android.support.v4.view.ViewPager
    10         android:id="@+id/viewpager"
    11         android:layout_height="wrap_content"
    12         android:layout_width="wrap_content"
    13         
    14         >
    15         <android.support.v4.view.PagerTabStrip
    16             android:id="@+id/tabstrip"
    17             android:layout_height="wrap_content"
    18         android:layout_width="wrap_content"
    19             />
    20            
    21     </android.support.v4.view.ViewPager>
    22 </RelativeLayout>

    步骤二:选项卡中的内容都是从布局文件中获取,所以我新建两个测试布局“layout1.xml”和“layout2.xml”,里面内容随意。

    步骤三:布局已经完成,在MainActivity.java类中,实现关键功能。

    首先要声明ViewPager和PagerTabStrip对象,通过findViewById分别找到资源id,声明ArrayList<View>来存放测试布局文件,核心代码如下:

     1 package com.example.viewpager;
     2 
     3 import java.util.ArrayList;
     4 
     5 import android.os.Bundle;
     6 import android.app.Activity;
     7 import android.graphics.Color;
     8 import android.support.v4.view.PagerAdapter;
     9 import android.support.v4.view.PagerTabStrip;
    10 import android.support.v4.view.ViewPager;
    11 import android.support.v4.view.ViewPager.OnPageChangeListener;
    12 import android.view.Menu;
    13 import android.view.View;
    14 import android.view.ViewGroup;
    15 import android.widget.Toast;
    16 
    17 public class MainActivity extends Activity implements OnPageChangeListener {
    18 
    19     private ViewPager viewpager;
    20     private PagerTabStrip tabstrip;
    21     private String[] title={"首页","新闻","公告","图片"};
    22     private ArrayList<View> views=new ArrayList<View>();
    23     @Override
    24     protected void onCreate(Bundle savedInstanceState) {
    25         super.onCreate(savedInstanceState);
    26         setContentView(R.layout.activity_main);
    27         viewpager=(ViewPager) findViewById(R.id.viewpager);
    28         tabstrip=(PagerTabStrip) findViewById(R.id.tabstrip);
    29         initial();
    30         viewpager.setAdapter(new MyPagerAdapter());
    31     }
    32 
    33     public void initial(){
    34         views.add(getLayoutInflater().inflate(R.layout.layout1,null));
    35         views.add(getLayoutInflater().inflate(R.layout.layout2,null));
    36         views.add(getLayoutInflater().inflate(R.layout.layout1,null));
    37         views.add(getLayoutInflater().inflate(R.layout.layout2,null));
    38         
    39         tabstrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));
    40         tabstrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_blue_bright));
    41         tabstrip.setTextColor(Color.WHITE);
    42         viewpager.setOnPageChangeListener(this);
    43     }
    44    class MyPagerAdapter extends PagerAdapter{
    45 
    46     @Override
    47     public int getCount() {
    48         // TODO 自动生成的方法存根
    49         return views.size();
    50     }
    51     
    52     @Override
    53     public Object instantiateItem(ViewGroup container, int position) {
    54         View v=views.get(position);
    55         container.addView(v);
    56         return v;
    57     }
    58 
    59     @Override
    60     public void destroyItem(ViewGroup container, int position, Object object) {
    61         // TODO 自动生成的方法存根
    62         //super.destroyItem(container, position, object);
    63         container.removeView(views.get(position));
    64     }
    65     @Override
    66     public boolean isViewFromObject(View arg0, Object arg1) {
    67         // TODO 自动生成的方法存根
    68         return arg0==arg1;
    69     }
    70     @Override
    71     public CharSequence getPageTitle(int position) {
    72         // TODO 自动生成的方法存根
    73         return title[position];
    74     }
    75        
    76    }
    77 @Override
    78 public void onPageScrollStateChanged(int arg0) {
    79     // TODO 自动生成的方法存根
    80     
    81 }
    82 
    83 @Override
    84 public void onPageScrolled(int arg0, float arg1, int arg2) {
    85     // TODO 自动生成的方法存根
    86     
    87 }
    88 
    89 @Override
    90 public void onPageSelected(int arg0) {
    91     // TODO 自动生成的方法存根
    92     //Toast.makeText(MainActivity.this,"新年快乐",Toast.LENGTH_SHORT).show();
    93 }
    94     
    95 }

    年后继续更新,祝大家新年快乐。

  • 相关阅读:
    Linux自定义服务文件编写
    Ubuntu PPA方式安装vim
    ubuntu PPA使用指南
    ubuntu安装最新emacs
    Docker支持中文
    C#调用Go版DLL
    C#调用exe程序
    golang编写动态库供c#程序调用
    科学正在追赶中医,中医将变得时髦(转载)
    常见.NET功能代码汇总 (3)
  • 原文地址:https://www.cnblogs.com/hyyweb/p/5182669.html
Copyright © 2011-2022 走看看