ViewPager
对于ViewPager官方的描述就是页面允许左右滑动的布局管理器,而不同页面带有不同的数据。
页面设置:
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.viewpager.widget.PagerTabStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="18dp"
android:id="@+id/pagerTab">
</androidx.viewpager.widget.PagerTabStrip>
</androidx.viewpager.widget.ViewPager>
ViewPager的应用也都需要用到适配器来加载数据。
适配器:
package com.example.myuibasecontrol.Adapter;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.List;
public class PagerAdapter extends androidx.viewpager.widget.PagerAdapter {
private List<View> viewList;
private List<String> titlelist;
public PagerAdapter(List<View> viewList, List<String> titlelist) {
this.viewList = viewList;
this.titlelist = titlelist;
}
/**
* 返回页卡的数量
* @return
*/
@Override
public int getCount() {
// return viewList.size();
return Integer.MAX_VALUE;
}
/**
* 判断View是否来自对象
* @param view 视图
* @param object 对象
* @return
*/
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
/**
* 实例化一个页卡
* @param container 容器
* @param position 位置
* @return
*/
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
/**
* 销毁页卡
* @param container
* @param position
* @param object
*/
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));
}
/**
* 返回页卡标题的信息,要实现一定在布局文件里一定要有PageTabStrip
* @param position
* @return
*/
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titlelist.get(position);
}
}
下面就是设置数据和怎么将数据加载到适配器里面去: 数据源中的layout文件是自定义的。可以根据项目要求和自己喜好设置。
package com.example.myuibasecontrol;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.example.myuibasecontrol.Adapter.PagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity8 extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private PagerTabStrip pagerTabStrip;
private List<View> viewList;
private List<String> titlelist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main8);
viewPager=findViewById(R.id.viewPager);
pagerTabStrip=findViewById(R.id.pagerTab);
viewList=new ArrayList<>();
titlelist=new ArrayList<>();
// 1.数据源,通过View对象作为Viewpage的数据
View view=View.inflate(this,R.layout.view1,null);
viewList.add(view);
View view2=View.inflate(this,R.layout.view2,null);
viewList.add(view2);
View view3=View.inflate(this,R.layout.view3,null);
viewList.add(view3);
View view4=View.inflate(this,R.layout.view4,null);
viewList.add(view4);
// 2.tab的数据
titlelist.add("第一页");
titlelist.add("第二页");
titlelist.add("第三页");
titlelist.add("第四页");
// 3.修改tab的样式
pagerTabStrip.setBackgroundColor(Color.GRAY);//背景颜色
pagerTabStrip.setTextColor(Color.WHITE);//字体颜色
pagerTabStrip.setTabIndicatorColor(Color.BLUE);//设置标签指示颜色
// 4.创建PagerAdapter适配器,加载数据List<View>
PagerAdapter adapter=new PagerAdapter(viewList,titlelist);
// 5.加载适配器
viewPager.setAdapter(adapter);
// 6.设置监听器
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Toast.makeText(MainActivity8.this, "当前页面是第"+(position+1)+"页", Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
学会缩小自己的情绪,拓宽自己的眼界,所有的人都成长的十分不易,一步步走来十分艰辛,克服恐惧与难题的唯一办法就是:直面问题的本质