简体   繁体   English

可滑动标签未在Android中滑动

[英]Swipable tab is not swiping in android

I'm trying to create a navigation drawer with swipe tab. 我正在尝试创建带有滑动选项卡的导航抽屉。 But my viewpager is not working fine. 但是我的viewpager工作不正常。 I can only select the tab. 我只能选择标签。 Viewpager can not load any fragment. Viewpager无法加载任何片段。 so I can not swipe it. 所以我不能刷卡 If i change the height of the viewpager it hides the tab and load all the fragment. 如果我更改viewpager的高度,它将隐藏选项卡并加载所有片段。

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<include
    android:id="@+id/app_bar"
    layout="@layout/app_bar" />



<android.support.v4.widget.DrawerLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/drawer_layout">
    <FrameLayout
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >


        <android.support.design.widget.TabLayout
            android:id="@+id/sliding_tab"
            style="@style/MyCustomTabLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            app:tabMode="scrollable" />

        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@android:color/white" />

    </FrameLayout>

    <fragment
        android:id="@+id/nav_drawer"
        android:name="com.example.usaukglu.tablayoyt.NavigationDrawer"
        android:layout_width="@dimen/drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:layout="@layout/navigation_drawer"
        tools:layout="@layout/navigation_drawer" />

</android.support.v4.widget.DrawerLayout>


</LinearLayout>

Here is my MainActivity.java Code: 这是我的MainActivity.java代码:

package com.example.usaukglu.tablayoyt;

import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
NavigationDrawer navigationDrawer;
DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_appbar);

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
    TabLayout tabLayout= (TabLayout) findViewById(R.id.sliding_tab);
    toolbar= (Toolbar) findViewById(R.id.app_bar);
    drawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);

    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    viewPager.setAdapter(new   ViewPagerAdapter(getSupportFragmentManager(),MainActivity.this));
    tabLayout.setupWithViewPager(viewPager);

    navigationDrawer= (NavigationDrawer) getSupportFragmentManager().findFragmentById(R.id.nav_drawer);
    navigationDrawer.setUp(R.id.nav_drawer,drawerLayout,toolbar);

}

}

Here is my ViewpagerAdapter.java code 这是我的ViewpagerAdapter.java代码

package com.example.usaukglu.tablayoyt;

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;


class ViewPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = 3;
private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" };
private Context context;

public ViewPagerAdapter(FragmentManager fm, Context context) {
    super(fm);
    this.context = context;
}

@Override
public int getCount() {
    return PAGE_COUNT;
}

@Override
public Fragment getItem(int position) {
    Fragment fragment=null;
    if (position==0){
        fragment=new FragmentPage();
    }
    if (position==1){
        fragment=new FragmentExpense();
    }
    if (position==2){
        fragment=new FragmentIncome();
    }
    return fragment;
}

@Override
public CharSequence getPageTitle(int position) {
    // Generate title based on item position
    return tabTitles[position];

}
}

You shouldn't use FrameLayout as container for the tab + pager. 您不应该将FrameLayout用作Tab +分页器的容器。 FrameLayout is used mostly to put views above others. FrameLayout通常用于将视图置于其他视图之上。 To fix it you should change this FrameLayout to LinearLayout with vertical orientation. 要修复它,您应该将此FrameLayout更改为具有垂直方向的LinearLayout。 Also the view page height should be match_parent. 此外,视图页面的高度应为match_parent。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM