【问题标题】:click on tab layout doesn't work at all单击选项卡布局根本不起作用
【发布时间】:2015-12-21 13:56:35
【问题描述】:

我已经实现了this example

但无法点击第二个标签。

我的 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);

请提出任何建议。

【问题讨论】:

标签: android android-viewpager android-tablayout


【解决方案1】:

有时我认为问题可能是 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"/>

【讨论】:

  • 我遇到了这个问题,其中 ViewPager 和 AppBarLayout 被放置在 RelativeLayout 中。将其更改为 LinearLayout 即可解决问题。
  • 我浪费了几个小时来解决这个问题。多次更换模块,也进行了很多搜索,但找不到解决方案,但这个简单的修正 viewpager 和 tablayout 位置的简单修复修复了它。我使用的是 relativelayout,它只是重叠,通过查看它是不可见的,因为加载的片段是空白的。
【解决方案2】:

更新: setOnTabSelectedListener 已弃用,使用 addOnTabSelectedListener

试试这个:

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

});

如果它不适用于您的情况,请检查您的布局。可能有一个视图与您的 TabLayout 重叠。

【讨论】:

  • 使用 addOnTabSelectedListener() 版本为我工作。
【解决方案3】:

由于这个方法现在是drepecatad,你可以使用新的方法

addOnTabSelectedListener(OnTabSelectedListener)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2018-05-13
    • 2014-08-31
    • 1970-01-01
    • 2019-09-16
    相关资源
    最近更新 更多