微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin.Android ViewPager滑动不起作用

如何解决Xamarin.Android ViewPager滑动不起作用

我的viewpager无法使用滑动功能,通过按“布局”选项卡中的按钮来更改视图效果很好,但不能在viewpager中滑动。我最初的猜测是,因为我使用了抽屉布局和抽屉导航,所以在我尝试不使用它们之后,仍然无法刷我的视图寻呼机

这是我的代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <com.google.android.material.tabs.TabLayout
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tabLayout" />
    <androidx.viewpager.widget.ViewPager
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/viewPager"
        android:fitsSystemWindows="true" />

</LinearLayout>

fragment_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="Hello !!"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/textView1" />

</LinearLayout>

ViewPagerAdapter.cs

using System;
using System.Collections.Generic;
using AndroidX.Fragment.App;
using java.lang;

namespace Project
{
    public class PagerFragmentAdapter : FragmentStatePagerAdapter
    {

        List<Fragment> fragments;
        List<java.lang.String> fragmentNames;

        public PagerFragmentAdapter(FragmentManager fm) : base(fm)
        {
            fragments = new List<Fragment>();
            fragmentNames = new List<java.lang.String>();
        }

        public void AddFragment(Fragment fragment,java.lang.String title)
        {
            fragments.Add(fragment);
            fragmentNames.Add(title);
        }

        public override int Count
        {
            get
            {
                return fragments.Count;
            }
        }

        public override Fragment GetItem(int position)
        {
            return fragments[position];
        }

        public override ICharSequence GetPageTitleFormatted(int position)
        {
            return fragmentNames[position];
        }
    }
}

MainActivity.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.OS;
using Project.Adapters;
using Google.Android.Material.Tabs;
using AndroidX.ViewPager.Widget;
using Project.Fragments;
using Android.App;
using AndroidX.AppCompat.App;

namespace Project
{
    [Activity(Label = "MainActivity")]
    public class MainActivity : AppCompatActivity
    {
        ViewPager viewPager;
        TabLayout tabLayout;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_layanan);

            ConnectView();
        }

        void ConnectView()
        {
            viewPager = FindViewById<ViewPager>(Resource.Id.viewPager);
            tabLayout = FindViewById<TabLayout>(Resource.Id.tabLayout);

            viewPager.OffscreenPageLimit = 3;
            viewPager.BeginFakeDrag();

            SetUpViewPager();
        }

        void SetUpViewPager()
        {

            PagerFragmentAdapter adapter = new PagerFragmentAdapter(SupportFragmentManager);
            adapter.AddFragment(new ViewFragment(),new java.lang.String("View 1"));
            adapter.AddFragment(new ViewFragment(),new java.lang.String("View 2"));
            viewPager.Adapter = adapter;
            tabLayout.SetupWithViewPager(viewPager);
        }
    }
}

我想念什么吗?

解决方法

您只需要删除viewPager.BeginFakeDrag();

void ConnectView()
  {
      viewPager = FindViewById<ViewPager>(Resource.Id.viewPager);
      tabLayout = FindViewById<TabLayout>(Resource.Id.tabLayout);

      viewPager.OffscreenPageLimit = 3;
      //viewPager.BeginFakeDrag();     //remove this line

      SetUpViewPager();
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。