android底部导航栏拖动,Android_ViewPager+Fragment实现页面滑动和底部导航栏

1、Xml中底部导航栏由一个RadioGroup组成,其上是ViewPager。

ca9ee60369a56332f2bbe077f2921383.png

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="horizontal"

android:background="#FFFFFF"

tools:context=".MainActivity">

android:id="@+id/main_toplinear"

android:layout_width="match_parent"

android:layout_height="70dp"

android:background="@drawable/riple_btn_nocorner"

android:gravity="center">

android:layout_width="60dp"

android:layout_height="60dp"

android:layout_margin="5dp"

android:src="@drawable/icon">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="滴滴嗒小账本"

android:textColor="#9E6E1E"

android:textSize="25dp">

android:layout_width="match_parent"

android:layout_height="0.5dp"

android:layout_below="@+id/main_toplinear"

android:background="#232">

android:layout_width="match_parent"

android:layout_height="0.5dp"

android:layout_above="@+id/main_radio_group"

android:background="#232">

android:id="@+id/main_radio_group"

android:layout_width="match_parent"

android:layout_height="70dp"

android:layout_alignParentBottom="true"

android:background="#EDDEF7"

android:gravity="center"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_weight="1"

android:button="@null"

android:text="记录"

android:gravity="center"

android:textSize="25dp"

android:textColor="#9E6E1E"

android:background="@drawable/radio"

android:id="@+id/main_rd_cord"

>

android:id="@+id/main_rd_inout"

android:layout_width="5dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

android:textSize="25dp"

android:textColor="#9E6E1E"

android:text="收支"

android:background="@drawable/radio"

android:button="@null">

android:id="@+id/main_rd_my"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_weight="1"

android:button="@null"

android:gravity="center"

android:textSize="25dp"

android:textColor="#9E6E1E"

android:background="@drawable/radio"

android:text="我的"

>

android:id="@+id/main_viewpager"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@+id/main_toplinear"

android:layout_above="@id/main_radio_group">

2、编写几个页面的Fragment。

3、编写FragmentPagerAdapter,重写getItem和getCount方法。

package com.example.didida_corder;

import androidx.annotation.NonNull;

import androidx.fragment.app.Fragment;

import androidx.fragment.app.FragmentManager;

import androidx.fragment.app.FragmentPagerAdapter;

public class MyFragPageAdapter extends FragmentPagerAdapter {

private int PAGE_NUM = 3;

private final int PAGE_CORD = 0;

private final int PAGE_INOUT = 1;

private final int PAGE_MY = 2;

private CordFragment cordFragment = null;

private MyItemFragment myItemFragment = null;

private InOutFragment inOutFragment = null;

public MyFragPageAdapter(@NonNull FragmentManager fm) {

super(fm);

cordFragment = new CordFragment();

myItemFragment = new MyItemFragment();

inOutFragment = new InOutFragment();

}

@NonNull

@Override

public Fragment getItem(int position) {

switch (position) {

case PAGE_CORD: {

return cordFragment;

}

case PAGE_INOUT: {

return inOutFragment;

}

case PAGE_MY: {

return myItemFragment;

}

default:

return null;

}

}

@Override

public int getCount() {

return PAGE_NUM;

}

}

4、在MainActivity中实现ViewPager.OnPageChangeListener和RadioGroup.OnCheckedChangeListener接口。

package com.example.didida_corder;

import androidx.appcompat.app.AppCompatActivity;

import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Adapter;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener{

private MyFragPageAdapter myFragPageAdapter;

private ViewPager viewPager;

private TextView textView;

private RadioGroup radioGroup;

private RadioButton radioButton_crod;

private RadioButton radioButton_inout;

private RadioButton radioButton_myitem;

private int PAGE_NUM = 3;

private final int PAGE_CORD = 0;

private final int PAGE_INOUT = 1;

private final int PAGE_MY = 2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myFragPageAdapter=new MyFragPageAdapter(getSupportFragmentManager());

bindViews();

radioButton_crod.setChecked(true);

}

private void bindViews(){

radioButton_crod=findViewById(R.id.main_rd_cord);

radioButton_inout=findViewById(R.id.main_rd_inout);

radioButton_myitem=findViewById(R.id.main_rd_my);

radioGroup=findViewById(R.id.main_radio_group);

radioGroup.setOnCheckedChangeListener(this);

viewPager= findViewById(R.id.main_viewpager);

viewPager.setAdapter(myFragPageAdapter);

viewPager.addOnPageChangeListener(this);

viewPager.setCurrentItem(0);

}

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override

public void onPageSelected(int position) {

}

@Override

public void onPageScrollStateChanged(int state) {

if (state==2){

switch (viewPager.getCurrentItem()){

case PAGE_CORD:

radioButton_crod.setChecked(true);

break;

case PAGE_INOUT:

radioButton_inout.setChecked(true);

break;

case PAGE_MY:

radioButton_myitem.setChecked(true);

break;

}

}

}

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

switch (checkedId){

case R.id.main_rd_cord:{

viewPager.setCurrentItem(PAGE_CORD);

break;

}

case R.id.main_rd_inout:{

viewPager.setCurrentItem(PAGE_INOUT);

break;

}

case R.id.main_rd_my:{

viewPager.setCurrentItem(PAGE_MY);

break;

}

}

}

}

标签:Fragment,ViewPager,private,int,radioButton,import,Android,main,PAGE

来源: https://www.cnblogs.com/XiaoGao128/p/12258811.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值