我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android基于ViewPager Fragment实现选项卡

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android基于ViewPager Fragment实现选项卡

先给大家展示效果图:


1.新建TestFragmen继承Fragment


public class TestFragment extends Fragment {
  private static final String TAG = "TestFragment";
  private String hello;// = "hello android";
  private String defaultHello = "default value";
  private Map<string, object=""> maplist;
  static TestFragment newInstance(String s, Map<string, object=""> map) {
    TestFragment newFragment = new TestFragment();
    // Bundle bundle = new Bundle();
    // bundle.putString("hello", s);
    // newFragment.setArguments(bundle);
    final SerializableMap myMap=new SerializableMap();
    myMap.setMap(map);
    Bundle bundle = new Bundle();
    bundle.putSerializable("map", myMap);
    newFragment.setArguments(bundle);
    return newFragment;
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "TestFragment-----onCreate");
    Bundle args = getArguments();
   // hello = args != null ? args.getString("hello") : defaultHello;
    Bundle bundle = getArguments();
    SerializableMap serializableMap = (SerializableMap) bundle.get("map");
    maplist =serializableMap.getMap();
  }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    Log.d(TAG, "TestFragment-----onCreateView");
    View view = inflater.inflate(R.layout.lay1, container, false);
    // TextView viewhello = (TextView) view.findViewById(R.id.tv_hello);
    //viewhello.setText(maplist.get("userid")+"time");
    ListView lv = (ListView) view.findViewById(R.id.listView3);
    ContactAdapter hc = new ContactAdapter(getActivity().getApplicationContext(),getContact());
    lv.setAdapter(hc);
    lv.setCacheColorHint(0);
    return view;
  }
  private ArrayList<contact> getContact(){
    ArrayList<contact> hcList = new ArrayList<contact>();
    for(int i=0;i<10;i++)
    {
    Contact c0 = new Contact();
    c0.setTxPath(R.drawable.more_game+"");
    c0.setName(maplist.get("userid")+" 年龄:"+maplist.get("age"));
    hcList.add(c0);
    }
    return hcList;
  }
  @Override
  public void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "TestFragment-----onDestroy");
  }
}
</contact></contact></contact></string,></string,>

2.MyFragmentPagerAdapter继承FragmentPagerAdapter


public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
  private ArrayList<fragment> fragmentsList;
  public MyFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
  }
  public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<fragment> fragments) {
    super(fm);
    this.fragmentsList = fragments;
  }
  @Override
  public int getCount() {
    return fragmentsList.size();
  }
  @Override
  public Fragment getItem(int arg0) {
    return fragmentsList.get(arg0);
  }
  @Override
  public int getItemPosition(Object object) {
    return super.getItemPosition(object);
  }
}
</fragment></fragment>

3.MainActivity 要继承FragmentActivity


public class MainActivity extends FragmentActivity {
  private static final String TAG = "MainActivity";
  private ViewPager mPager;
  private ArrayList<fragment> fragmentsList;
  private ImageView ivBottomLine;
  private TextView tvTabActivity, tvTabGroups, tvTabFriends, tvTabChat;
  private int currIndex = 0;
  private int bottomLineWidth;
  private int offset = 0;
  private int position_one;
  private int position_two;
  private int position_three;
  private Resources resources;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    resources = getResources();
    InitWidth();
    InitTextView();
    InitViewPager();
  }
  private void InitTextView() {
    tvTabActivity = (TextView) findViewById(R.id.tv_tab_activity);
    tvTabGroups = (TextView) findViewById(R.id.tv_tab_groups);
    tvTabFriends = (TextView) findViewById(R.id.tv_tab_friends);
    tvTabChat = (TextView) findViewById(R.id.tv_tab_chat);
    tvTabActivity.setOnClickListener(new MyOnClickListener(0));
    tvTabGroups.setOnClickListener(new MyOnClickListener(1));
    tvTabFriends.setOnClickListener(new MyOnClickListener(2));
    tvTabChat.setOnClickListener(new MyOnClickListener(3));
  }
  private void InitViewPager() {
    mPager = (ViewPager) findViewById(R.id.vPager);
    fragmentsList = new ArrayList<fragment>();
    Map<string, object=""> paramMap = new HashMap<string, object="">();
    paramMap.put("userid","小洪");
    paramMap.put("age",23);
    Map<string, object=""> paramMap2 = new HashMap<string, object="">();
    paramMap2.put("userid","vatty");
    paramMap2.put("age",24);
    Map<string, object=""> paramMap3 = new HashMap<string, object="">();
    paramMap3.put("userid","小明");
    paramMap3.put("age",25);
    Map<string, object=""> paramMap4 = new HashMap<string, object="">();
    paramMap4.put("userid","hongshengpeng.com");
    paramMap4.put("age",26);
    Fragment activityfragment = TestFragment.newInstance("Hello Activity.",paramMap);
    Fragment groupFragment = TestFragment.newInstance("Hello Group.",paramMap2);
    Fragment friendsFragment=TestFragment.newInstance("Hello Friends.",paramMap3);
    Fragment chatFragment=TestFragment.newInstance("Hello Chat.",paramMap4);
    fragmentsList.add(activityfragment);
    fragmentsList.add(groupFragment);
    fragmentsList.add(friendsFragment);
    fragmentsList.add(chatFragment);
    mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList));
    mPager.setCurrentItem(0);
    mPager.setOnPageChangeListener(new MyOnPageChangeListener());
  }
  private void InitWidth() {
    ivBottomLine = (ImageView) findViewById(R.id.iv_bottom_line);
    bottomLineWidth = ivBottomLine.getLayoutParams().width;
    Log.d(TAG, "cursor imageview width=" + bottomLineWidth);
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    int screenW = dm.widthPixels;
    offset = (int) ((screenW / 4.0 - bottomLineWidth) / 2);
    Log.i("MainActivity", "offset=" + offset);
    position_one = (int) (screenW / 4.0);
    position_two = position_one * 2;
    position_three = position_one * 3;
  }
  public class MyOnClickListener implements View.OnClickListener {
    private int index = 0;
    public MyOnClickListener(int i) {
      index = i;
    }
    @Override
    public void onClick(View v) {
      mPager.setCurrentItem(index);
    }
  };
  public class MyOnPageChangeListener implements OnPageChangeListener {
    @Override
    public void onPageSelected(int arg0) {
      Animation animation = null;
      switch (arg0) {
      case 0:
        if (currIndex == 1) {
          animation = new TranslateAnimation(position_one, 0, 0, 0);
          tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 2) {
          animation = new TranslateAnimation(position_two, 0, 0, 0);
          tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 3) {
          animation = new TranslateAnimation(position_three, 0, 0, 0);
          tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
        }
        tvTabActivity.setTextColor(resources.getColor(R.color.white));
        break;
      case 1:
        if (currIndex == 0) {
          animation = new TranslateAnimation(0, position_one, 0, 0);
          tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 2) {
          animation = new TranslateAnimation(position_two, position_one, 0, 0);
          tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 3) {
          animation = new TranslateAnimation(position_three, position_one, 0, 0);
          tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
        }
        tvTabGroups.setTextColor(resources.getColor(R.color.white));
        break;
      case 2:
        if (currIndex == 0) {
          animation = new TranslateAnimation(0, position_two, 0, 0);
          tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 1) {
          animation = new TranslateAnimation(position_one, position_two, 0, 0);
          tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 3) {
          animation = new TranslateAnimation(position_three, position_two, 0, 0);
          tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
        }
        tvTabFriends.setTextColor(resources.getColor(R.color.white));
        break;
      case 3:
        if (currIndex == 0) {
          animation = new TranslateAnimation(0, position_three, 0, 0);
          tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 1) {
          animation = new TranslateAnimation(position_one, position_three, 0, 0);
          tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
        } else if (currIndex == 2) {
          animation = new TranslateAnimation(position_two, position_three, 0, 0);
          tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
        }
        tvTabChat.setTextColor(resources.getColor(R.color.white));
        break;
      }
      currIndex = arg0;
      animation.setFillAfter(true);
      animation.setDuration(300);
      ivBottomLine.startAnimation(animation);
    }
    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }
    @Override
    public void onPageScrollStateChanged(int arg0) {
    }
  }
}</string,></string,></string,></string,></string,></string,></string,></string,></fragment></fragment>

4.分别新建lay1.xml、 lay2.xml 、lay3.xml

lay1.xml


<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" android:orientation="vertical">
  <textview android:id="@+id/tv_hello" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:visibility="gone">
   <listview android:id="@+id/listView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:cachecolorhint="@android:color/transparent" android:divider="@drawable/reader_item_divider" android:listselector="@android:color/transparent">
        </listview>
</textview></linearlayout>

lay2.xml


<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#FF8684">
</linearlayout>

lay3.xml与lay2.xml类型


<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#1586FF">
</linearlayout>

main.xml


<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:umadsdk="http://schemas.android.com/apk/res/com.LoveBus" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
  <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">
    <linearlayout android:layout_width="match_parent" android:layout_height="48dip" android:background="@drawable/android_title_bg">
      <imageview android:id="@+id/imageView1" android:layout_width="36dip" android:layout_height="36dip" android:layout_gravity="center_vertical" android:layout_marginleft="10dip" android:class="lazy" data-src="@drawable/more_game">
      <textview android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="10dip" android:text="乐够GO" android:textappearance="?android:attr/textAppearanceLarge">
      <imageview android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingleft="10dip" android:class="lazy" data-src="@drawable/status_online" android:visibility="gone">
    </imageview></textview></imageview></linearlayout>
    <linearlayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingbottom="5dip" android:paddingtop="10dip" android:background="@color/coral">
      <textview android:id="@+id/tv_tab_activity" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_1" android:textcolor="@color/white" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_groups" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_2" android:textcolor="@color/lightwhite" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_friends" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_3" android:textcolor="@color/lightwhite" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_chat" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_4" android:textcolor="@color/lightwhite" android:textsize="18sp">
    </textview></textview></textview></textview></linearlayout>
    <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical" android:paddingbottom="3dip">
      <imageview android:id="@+id/iv_bottom_line" android:layout_width="40dip" android:layout_height="2dip" android:layout_marginleft="20dip" android:scaletype="matrix" android:class="lazy" data-src="#fff">
    </imageview></linearlayout>
  </linearlayout>
</android.support.v4.view.viewpager></linearlayout>

ps:ViewPager + Fragment实现滑动标签页

ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。

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:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="vertical"> 
  <LinearLayout  
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView  
      android:id="@+id/tv_guid1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1.0" 
      android:gravity="center" 
      android:text="特性1" 
      android:textSize="18sp"/> 
    <TextView  
      android:id="@+id/tv_guid2"  
      android:layout_width="wrap_content"  
      android:layout_height="wrap_content"  
      android:layout_weight="1.0"  
      android:gravity="center"  
      android:text="特性2"   
      android:textSize="18sp"/>  
    <TextView  
      android:id="@+id/tv_guid3"  
      android:layout_width="wrap_content"  
      android:layout_height="wrap_content"  
      android:layout_weight="1.0"  
      android:gravity="center"  
      android:text="特性3 "   
      android:textSize="18sp"/>  
    <TextView  
      android:id="@+id/tv_guid4"  
      android:layout_width="wrap_content"  
      android:layout_height="wrap_content"  
      android:layout_weight="1.0"  
      android:gravity="center"  
      android:text="特性4"   
      android:textSize="18sp"/> 
  </LinearLayout> 
  <ImageView  
    android:id="@+id/cursor" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="matrix" 
    android:class="lazy" data-src="@drawable/cursor"/> 
  <android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:flipInterval="30" 
    android:persistentDrawingCache="animation"/> 
</LinearLayout> 

MainActivity.java


package com.example.viewpagernfragment; 
import java.util.ArrayList; 
import android.graphics.BitmapFactory; 
import android.graphics.Matrix; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.util.DisplayMetrics; 
import android.view.Menu; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.TranslateAnimation; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 
public class MainActivity extends FragmentActivity { 
  private ViewPager mPager; 
  private ArrayList<Fragment> fragmentList; 
  private ImageView image; 
  private TextView view1, view2, view3, view4; 
  private int currIndex;//当前页卡编号 
  private int bmpW;//横线图片宽度 
  private int offset;//图片移动的偏移量 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    InitTextView(); 
    InitImage(); 
    InitViewPager(); 
  } 
   
  public void InitTextView(){ 
    view1 = (TextView)findViewById(R.id.tv_guid1); 
    view2 = (TextView)findViewById(R.id.tv_guid2); 
    view3 = (TextView)findViewById(R.id.tv_guid3); 
    view4 = (TextView)findViewById(R.id.tv_guid4); 
    view1.setOnClickListener(new txListener(0)); 
    view2.setOnClickListener(new txListener(1)); 
    view3.setOnClickListener(new txListener(2)); 
    view4.setOnClickListener(new txListener(3)); 
  } 
  public class txListener implements View.OnClickListener{ 
    private int index=0; 
    public txListener(int i) { 
      index =i; 
    } 
    @Override 
    public void onClick(View v) { 
      // TODO Auto-generated method stub 
      mPager.setCurrentItem(index); 
    } 
  } 
   
  public void InitImage(){ 
    image = (ImageView)findViewById(R.id.cursor); 
    bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.cursor).getWidth(); 
    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int screenW = dm.widthPixels; 
    offset = (screenW/4 - bmpW)/2; 
    //imgageview设置平移,使下划线平移到初始位置(平移一个offset) 
    Matrix matrix = new Matrix(); 
    matrix.postTranslate(offset, 0); 
    image.setImageMatrix(matrix); 
  } 
   
  public void InitViewPager(){ 
    mPager = (ViewPager)findViewById(R.id.viewpager); 
    fragmentList = new ArrayList<Fragment>(); 
    Fragment btFragment= new ButtonFragment(); 
    Fragment secondFragment = TestFragment.newInstance("this is second fragment"); 
    Fragment thirdFragment = TestFragment.newInstance("this is third fragment"); 
    Fragment fourthFragment = TestFragment.newInstance("this is fourth fragment"); 
    fragmentList.add(btFragment); 
    fragmentList.add(secondFragment); 
    fragmentList.add(thirdFragment); 
    fragmentList.add(fourthFragment); 
    //给ViewPager设置适配器 
    mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList)); 
    mPager.setCurrentItem(0);//设置当前显示标签页为第一页 
    mPager.setOnPageChangeListener(new MyOnPageChangeListener());//页面变化时的监听器 
  } 
  public class MyOnPageChangeListener implements OnPageChangeListener{ 
    private int one = offset *2 +bmpW;//两个相邻页面的偏移量 
    @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 
    } 
    @Override 
    public void onPageSelected(int arg0) { 
      // TODO Auto-generated method stub 
      Animation animation = new TranslateAnimation(currIndex*one,arg0*one,0,0);//平移动画 
      currIndex = arg0; 
      animation.setFillAfter(true);//动画终止时停留在最后一帧,不然会回到没有执行前的状态 
      animation.setDuration(200);//动画持续时间0.2秒 
      image.startAnimation(animation);//是用ImageView来显示动画的 
      int i = currIndex + 1; 
      Toast.makeText(MainActivity.this, "您选择了第"+i+"个页卡", Toast.LENGTH_SHORT).show(); 
    } 
  } 
  @Override 
  public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
  } 
} 

谷歌官方认为,ViewPager应该和Fragment一起使用时,此时ViewPager的适配器是FragmentPagerAdapter,当你实现一个FragmentPagerAdapter,你必须至少覆盖以下方法:

getCount()

getItem()

如果ViewPager没有和Fragment一起,ViewPager的适配器是PagerAdapter,它是基类提供适配器来填充页面ViewPager内部,当你实现一个PagerAdapter,你必须至少覆盖以下方法:


instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)
getCount()
isViewFromObject(View, Object)
[java] view plaincopy
package com.example.viewpagernfragment; 
import java.util.ArrayList; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ 
  ArrayList<Fragment> list; 
  public MyFragmentPagerAdapter(FragmentManager fm,ArrayList<Fragment> list) { 
    super(fm); 
    this.list = list; 
  } 
  @Override 
  public int getCount() { 
    return list.size(); 
  } 
  @Override 
  public Fragment getItem(int arg0) { 
    return list.get(arg0); 
  } 
} 
[java] view plaincopy
package com.example.viewpagernfragment; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.Toast; 
public class ButtonFragment extends Fragment{ 
  Button myButton; 
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.guide_1, container, false);//关联布局文件 
    myButton = (Button)rootView.findViewById(R.id.mybutton);//根据rootView找到button 
    //设置按键监听事件 
    myButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Toast.makeText(ButtonFragment.this.getActivity(), "button is click!", Toast.LENGTH_SHORT).show(); 
      } 
    }); 
    return rootView; 
  } 
} 
[java] view plaincopy
package com.example.viewpagernfragment; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
public class TestFragment extends Fragment { 
  private static final String TAG = "TestFragment"; 
  private String hello;// = "hello android"; 
  private String defaultHello = "default value"; 
  static TestFragment newInstance(String s) { 
    TestFragment newFragment = new TestFragment(); 
    Bundle bundle = new Bundle(); 
    bundle.putString("hello", s); 
    newFragment.setArguments(bundle); 
    //bundle还可以在每个标签里传送数据 
    return newFragment; 
  } 
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    Log.d(TAG, "TestFragment-----onCreateView"); 
    Bundle args = getArguments(); 
    hello = args != null ? args.getString("hello") : defaultHello; 
    View view = inflater.inflate(R.layout.guide_2, container, false); 
    TextView viewhello = (TextView) view.findViewById(R.id.tv); 
    viewhello.setText(hello); 
    return view; 
  } 
} 
<?xml version="1.0" encoding="UTF-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:background="#ff0000ff" >  
  <Button  
    android:id="@+id/mybutton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="hit me" 
    android:gravity="center"/> 
</RelativeLayout>  
[html] view plaincopy
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical" 
  android:background="#158684" > 
  <TextView 
    android:id="@+id/tv" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 
</RelativeLayout> 
您可能感兴趣的文章:Android ViewPager实现选项卡切换android使用viewpager计算偏移量实现选项卡功能


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android基于ViewPager Fragment实现选项卡

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android基于ViewPager Fragment实现选项卡

先给大家展示效果图:1.新建TestFragmen继承Fragmentpublic class TestFragment extends Fragment {private static final String TAG = "TestFr
2022-06-06

Android基于ViewPager+Fragment如何实现左右滑屏效果

这篇文章主要为大家展示了Android基于ViewPager+Fragment如何实现左右滑屏效果,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。本文实例讲述了Android基于ViewPage
2023-05-31

Android利用Fragment实现Tab选项卡效果

利用Fragment实现Tab选项卡效果: 将RadioGroup与Fragment集合,实现tab选项卡效果,这里面最关键的几个文件: 1.FragmentTabAdapter类:/***@Description: *@Author:Na
2022-06-06

Android使用TabLayout+Fragment实现顶部选项卡

先看效果图:使用Tablayout,首先需要在项目中加入Design包dependencies { compile 'com.android.support:design:24.1.1' }
2023-05-31

Android基于ViewPager实现的应用欢迎界面完整实例

本文实例讲述了Android基于ViewPager实现的应用欢迎界面。分享给大家供大家参考,具体如下: 有时候开发一个应用需要指导用户提示一些新功能,这样的欢迎界面的实现可以用一下方法 首先我们要用到ViewPager这个类,这个类是在An
2022-06-06

Android实现底部导航栏功能(选项卡)

现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能。 我们先看下该demo实例的框架图:其中各个类的作用以及资源文件就不详细解释了,
2022-06-06

基于Android如何实现将数据库保存到SD卡

有时候为了需要,会将数据库保存到外部存储或者SD卡中(对于这种情况可以通过加密数据来避免数据被破解),比如一个应用支持多个数据,每个数据都需要有一个对应的数据库,并且数据库中的信息量特别大时,这显然更应该将数据库保存在外部存储或者SD卡中,
2022-06-06

Android编程实现在底端显示选项卡的方法

本文实例讲述了Android编程实现在底端显示选项卡的方法。分享给大家供大家参考,具体如下: 1.layout 文件
2022-06-06

Android编程实现自定义Tab选项卡功能示例

本文实例讲述了Android编程实现自定义Tab选项卡功能。分享给大家供大家参考,具体如下:import android.app.TabActivity; import android.content.Intent; import andr
2022-06-06

怎么在Android应用中实现一个选项卡功能

怎么在Android应用中实现一个选项卡功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。选项卡(TabHost)方便的在窗口上设置多个标签页,每个标签页相当于获得一个与外
2023-05-31

Android仿微信底部实现Tab选项卡切换效果

在网上看了比较多的关于Tab的教程,发现都很杂乱。比较多的用法是用TitlePagerTabStrip和ViewPaper。不过TitlePagerTabStrip有个很大的缺陷,Tab里面的内容刚进去是没有的,要滑一次才能加载出来。而且滑
2022-06-06

Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能

先给大家展示下效果图,如果大家大家感觉不错,请参考实现思路及代码1 ViewPager类提供了多界面切换的新效果。新效果有如下特征: [1] 当前显示一组界面中的其中一个界面。 [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一
2022-06-06

Android开发中项目实现一个自定义Tab选项卡功能

Android开发中项目实现一个自定义Tab选项卡功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:import android.app.TabActivity;
2023-05-31

android基于ListView和CheckBox实现多选和全选记录的功能

应用开发中经常会有从数据库中读取数据显示,然后选中多条、全部记录并且删除的需求。在做定制系统联系人的时候也遇到这样的需求,下面写个简单的通过ListView和CheckBox实现多选、全选的例子。下面是具体的代码. 效果如下:MultiSe
2022-06-06

Android实现类似网易新闻选项卡动态滑动效果

本文会实现一个类似网易新闻(不说网易新闻大家可能不知道大概是什么样子)点击超多选项卡,选项卡动态滑动的效果。 首先来看看布局,就是用HorizontalScrollView控件来实现滑动的效果,里面包含了一个布局。 接下来我们在onCre
2022-06-06

Android组件TabHost实现页面中多个选项卡切换效果

TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计。 一、基础知识 TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡; TabSpec : 代表了选项卡界面
2022-06-06

Android编程实现将tab选项卡放在屏幕底部的方法

本文实例讲述了Android编程实现将tab选项卡放在屏幕底部的方法。分享给大家供大家参考,具体如下: 今天写Tab的时候由于TAB的跳转问题去查资料,倒反而发现更有趣的问题,就是如何将TAB放置在屏幕的底端。有点类似IPhone里的布局了
2022-06-06

Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件

最近用到需要无限轮播自动播放的轮播轮播图,网上感觉都有这样那样的问题,于是自己写了一个通用的控件CarouselFigureView。 特点: 1.可以轮播view可以自己定义,不一定是要是ImageView2.指示器默认显示,但是可以隐藏
2022-06-06

基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出

Android Material Design:PopupMenuAndroid Material Design 引入的PopupMenu类似过去的上下文菜单,但是更灵活。 如图所示:现在给出实现上图PopupMenu的代码。 本例是一个普
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录