点击选项卡布局无法正常工作

6

我已经实现了这个示例

但是无法点击第二个选项卡。

我的xml文件如下:

 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/header"
    android:orientation="horizontal">

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="fill_parent"
        android:layout_height="48dp"
        android:layout_below="@+id/header"
        android:background="@color/colorPrimary"
        app:tabSelectedTextColor="#ffffff" />

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_marginTop="@dimen/padding"
        android:layout_height="wrap_content"
        android:layout_below="@id/tab_layout" />

</LinearLayout>

和主要活动

 pager= (ViewPager) findViewById(R.id.view_pager);
    tabLayout= (TabLayout) findViewById(R.id.tab_layout);

    FragmentManager manager=getSupportFragmentManager();
    BuyCurrencyPagerAdapter adapter=new BuyCurrencyPagerAdapter(manager);

    //set Adapter to view pager
    pager.setAdapter(adapter);
    tabLayout.setupWithViewPager(pager);
    pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    tabLayout.setTabsFromPagerAdapter(adapter);

请给出任何建议。


看看这个问题,因为它有你想要做的每一段代码 https://dev59.com/N-k6XIcBkEYKwwoYEPzw - Anshul Tyagi
3个回答

9
有时我认为问题可能是ViewPager位于TabLayout上方。您需要将其放置在下方,如下所示:
<AppBarLayout>
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"/>

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"/>

2
我遇到了一个问题,ViewPager和AppBarLayout被放置在RelativeLayout中。将其更改为LinearLayout解决了这个问题。 - checklist
1
我浪费了好几个小时来解决这个问题。我多次替换模块并进行了大量搜索,但是一直找不到解决方案,但是通过简单地修正viewpager和tablayout的位置就解决了它。我使用的是相对布局,它只是重叠在一起,而通过查看加载的片段是空白的,这是不可见的。 - Akhilesh

5

更新:setOnTabSelectedListener已经过时,请使用addOnTabSelectedListener

尝试这样做:

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
    @Override
        public void onTabSelected(TabLayout.Tab tab) {
        pager.setCurrentItem(tab.getPosition());
    }

});

如果在您的情况下无法正常工作,请检查您的布局。可能存在一个视图覆盖了您的TabLayout

使用addOnTabSelectedListener()版本,这对我很有效。 - Ivan

0

由于此方法已被弃用,您可以使用新的方法

addOnTabSelectedListener(OnTabSelectedListener)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接