Android 选项卡停止响应API级别低于22的单击

Android 选项卡停止响应API级别低于22的单击,android,android-fragments,xamarin,android-viewpager,android-support-library,Android,Android Fragments,Xamarin,Android Viewpager,Android Support Library,我正在使用带有viewpager的表格布局在不同页面之间切换。当我使用Android版本6.0和目标Android版本5.1(棒棒糖)编译时,这很好,但当我目标Android的其他版本(如KitKat或冰激凌)时,我无法通过单击选项卡切换到不同的片段。 支持库支持使用ViewPager的最低版本是什么 在我的应用程序中,我的主布局设置如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm

我正在使用带有viewpager的表格布局在不同页面之间切换。当我使用Android版本6.0和目标Android版本5.1(棒棒糖)编译时,这很好,但当我目标Android的其他版本(如KitKat或冰激凌)时,我无法通过单击选项卡切换到不同的片段。 支持库支持使用ViewPager的最低版本是什么

在我的应用程序中,我的主布局设置如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include
    android:id="@+id/toolbar"
    layout="@menu/toolbar" />
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<!-- Bottom Tab menu -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                app:layout_scrollFlags="scroll|enterAlways"
                android:layout_width="match_parent"
                android:layout_height="@dimen/custom_tab_layout_height"
                app:tabMode="fixed"
                app:tabGravity="fill" />
        </android.support.design.widget.AppBarLayout>
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Yourtime.NonSwipeableViewpager
                android:id="@+id/viewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/fragmentContainer" />
        </FrameLayout>
    </RelativeLayout>
<!-- The Left Navigation Drawer -->
    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:theme="@style/NavigationViewStyle"
        android:id="@+id/nav_view"
        app:menu="@menu/nav_menu" />
</android.support.v4.widget.DrawerLayout>
是否可以将ViewPager与其他版本的Android一起使用

编辑

我正在使用不可擦除的viewpager来禁用滑动,因此我只能通过单击TableLayout按钮转到不同的视图。这是我的NonSwippelViewPager课程:

    class NonSwipeableViewpager : ViewPager
{
    public NonSwipeableViewpager(Context context):base(context)
    {

    }

    public NonSwipeableViewpager(Context context,  Android.Util.IAttributeSet attr)
        : base(context, attr)
    {

    }

    public override bool OnInterceptTouchEvent(MotionEvent ev)
    {
        return false;
    }

    public override bool OnTouchEvent(MotionEvent e)
    {
        return false;
    }
}
以下是ViewPagerAdapter的代码:

    class ViewPagerAdapter : Android.Support.V4.App.FragmentPagerAdapter
{
    public List<V4Fragment> mFragmentList = new List<V4Fragment>();
    public List<String> mFragmentTitleLis = new List<string>();
    Context ctxt = null;

    public ViewPagerAdapter(Context ctxt, V4FragmentManager manager)
        : base(manager)
    {
        this.ctxt = ctxt;
    }

    public ViewPagerAdapter(V4FragmentManager manager) : base(manager) { }

    public override Android.Support.V4.App.Fragment GetItem(int position)
    {
        return mFragmentList[position];;
    }

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

    public void addFrag(V4Fragment fragment, String title)
    {
        mFragmentList.Add(fragment);
        mFragmentTitleLis.Add(title);
    }

    public void addFrag(V4Fragment fragment, String title, Bundle user)
    {
        fragment.Arguments = user;
        mFragmentList.Add(fragment);
        mFragmentTitleLis.Add(title);
    }

    public override Java.Lang.ICharSequence GetPageTitleFormatted(int position)
    {
        return new Java.Lang.String(mFragmentTitleLis[position]);
    }
}
class ViewPagerAdapter:Android.Support.V4.App.FragmentPagerAdapter
{
公共列表MFFragmentList=新列表();
公共列表MFFragmentTitlelis=新列表();
上下文ctxt=null;
public ViewPagerAdapter(上下文ctxt,V4FragmentManager)
:基地(经理)
{
this.ctxt=ctxt;
}
public ViewPagerAdapter(V4FragmentManager管理器):基本(管理器){}
public override Android.Support.V4.App.Fragment GetItem(int位置)
{
返回MFFragmentList[位置];;
}
公共覆盖整数计数
{
获取{return MFFragmentList.Count;}
}
public void addFrag(v4片段,字符串标题)
{
添加(片段);
mFragmentTitleLis.Add(标题);
}
public void addFrag(v4片段片段、字符串标题、捆绑用户)
{
fragment.Arguments=user;
添加(片段);
mFragmentTitleLis.Add(标题);
}
public override Java.Lang.ICharSequence GetPageTitleFormatted(int位置)
{
返回新的Java.Lang.String(MFFragmentTitlelis[position]);
}
}

这是一个与Tablayout(Android支持设计库小部件)同步的ViewPager的工作。尝试将活动的基类从AppCompatActivity更改为FragmentActivity。

以下是与Tablayout(Android支持设计库小部件)同步的ViewPager的工作。尝试将活动的基类从AppCompatActivity更改为FragmentActivity。

是否发生生成错误?如果是,在哪个文件和哪一行?
ViewPager
支持返回API 4表格布局和设计库。因此,从API7(Android 2.1)开始,它应该可以在任何地方工作。你能更好地描述一下“但我不能切换到不同的片段”吗?你要撞车吗?选项卡布局是否更新,但视图寻呼机不切换屏幕?什么都没发生吗?您尝试过使用非自定义寻呼机适配器吗?我无法转到与TabLayout按钮关联的其他页面。我使用的是一个不可擦除的Viewpager,它具有滑动功能,因此我必须单击TableLayout按钮才能转到其他视图。当我用API22运行应用程序时,我可以这样做,但它不能用API19运行。应用程序的构建很好,并且在构建过程中没有出现任何错误。@bernardo.g哦,我明白了!这有点让人困惑,但当您浏览对支持库的引用时,这意味着您所看到的内容是在支持库v22.2.0中引入的。就这样。浏览编译SDK版本以获得更准确的结果。当您尝试使用不可用的东西时,Android Studio将向您发出警告。是否发生生成错误?如果是,在哪个文件和哪一行?
ViewPager
支持返回API 4表格布局和设计库。因此,从API7(Android 2.1)开始,它应该可以在任何地方工作。你能更好地描述一下“但我不能切换到不同的片段”吗?你要撞车吗?选项卡布局是否更新,但视图寻呼机不切换屏幕?什么都没发生吗?您尝试过使用非自定义寻呼机适配器吗?我无法转到与TabLayout按钮关联的其他页面。我使用的是一个不可擦除的Viewpager,它具有滑动功能,因此我必须单击TableLayout按钮才能转到其他视图。当我用API22运行应用程序时,我可以这样做,但它不能用API19运行。应用程序的构建很好,并且在构建过程中没有出现任何错误。@bernardo.g哦,我明白了!这有点让人困惑,但当您浏览对支持库的引用时,这意味着您所看到的内容是在支持库v22.2.0中引入的。就这样。浏览编译SDK版本以获得更准确的结果。当您尝试使用不可用的东西时,Android Studio将向您发出警告。
    class NonSwipeableViewpager : ViewPager
{
    public NonSwipeableViewpager(Context context):base(context)
    {

    }

    public NonSwipeableViewpager(Context context,  Android.Util.IAttributeSet attr)
        : base(context, attr)
    {

    }

    public override bool OnInterceptTouchEvent(MotionEvent ev)
    {
        return false;
    }

    public override bool OnTouchEvent(MotionEvent e)
    {
        return false;
    }
}
    class ViewPagerAdapter : Android.Support.V4.App.FragmentPagerAdapter
{
    public List<V4Fragment> mFragmentList = new List<V4Fragment>();
    public List<String> mFragmentTitleLis = new List<string>();
    Context ctxt = null;

    public ViewPagerAdapter(Context ctxt, V4FragmentManager manager)
        : base(manager)
    {
        this.ctxt = ctxt;
    }

    public ViewPagerAdapter(V4FragmentManager manager) : base(manager) { }

    public override Android.Support.V4.App.Fragment GetItem(int position)
    {
        return mFragmentList[position];;
    }

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

    public void addFrag(V4Fragment fragment, String title)
    {
        mFragmentList.Add(fragment);
        mFragmentTitleLis.Add(title);
    }

    public void addFrag(V4Fragment fragment, String title, Bundle user)
    {
        fragment.Arguments = user;
        mFragmentList.Add(fragment);
        mFragmentTitleLis.Add(title);
    }

    public override Java.Lang.ICharSequence GetPageTitleFormatted(int position)
    {
        return new Java.Lang.String(mFragmentTitleLis[position]);
    }
}