1、重写viewPage,禁止滑动
public class NoViewPager extends ViewPager {
public NoViewPager(@NonNull Context context) {
super(context);
}
public NoViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
}
2、 主布局
viewPage 加底部标签
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Tab.Tab_Mian">
<com.example.myan01.Tab.NoViewPager
android:id="@+id/viewPage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
<LinearLayout
android:background="@android:color/darker_gray"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10">
<ImageView
android:id="@+id/iv_01"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/tab1_open" />
<ImageView
android:id="@+id/iv_02"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/tab2_close" />
<ImageView
android:id="@+id/iv_03"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/tab3_close" />
</LinearLayout>
</LinearLayout>
3、 Activity文件实现切换功能
public class Tab_Mian extends AppCompatActivity {
private ViewPager viewPage;
private ImageView iv01;
private ImageView iv02;
private ImageView iv03;
private ArrayList<Fragment> fragments = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab__mian);
// 初始化
init();
fragments.add(new Tab01_Fragment());
fragments.add(new Tab02_Fragment());
fragments.add(new Tab03_Fragment());
viewPage.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
});
iv01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPage.setCurrentItem(0);
iv01.setImageResource(R.drawable.tab1_open);
iv02.setImageResource(R.drawable.tab2_close);
iv03.setImageResource(R.drawable.tab3_close);
}
});
iv02.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPage.setCurrentItem(1);
iv01.setImageResource(R.drawable.tab1_close);
iv02.setImageResource(R.drawable.tab2_open);
iv03.setImageResource(R.drawable.tab3_close);
}
});
iv03.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPage.setCurrentItem(2);
iv01.setImageResource(R.drawable.tab1_close);
iv02.setImageResource(R.drawable.tab2_close);
iv03.setImageResource(R.drawable.tab3_open);
}
});
}
private void init() {
viewPage = (ViewPager) findViewById(R.id.viewPage);
iv01 = (ImageView) findViewById(R.id.iv_01);
iv02 = (ImageView) findViewById(R.id.iv_02);
iv03 = (ImageView) findViewById(R.id.iv_03);
}
}
4、 实现结果
5、 防止编辑框顶起底部标签
解决办法
android:windowSoftInputMode=“adjustPan”