android - tabMode ="scrollable"不工作

标签 android android-layout android-fragments

我正在使用 Android 设计支持库中的 TabLayout。我正在使用 Material 设计主题。下面是代码

activity_scrollable_Tab.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

 <android.support.design.widget.AppBarLayout

<android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="scrollable"/>

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

   <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

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

可滚动的TabActivity.java

public class ScrollableTabsActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrollable_tabs);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFrag(new OneFragment(), "ONE");
        adapter.addFrag(new TwoFragment(), "TWO");
        .....
        adapter.addFrag(new TenFragment(), "TEN");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

选项卡滚动在 Lollipop 中有效。但是相同的代码不适用于 Kitkat 和 Jelly bean 设备。在 Kitkat 和 Jelly bean 设备上我面临两个问题,

  1. 当我滚动 Tab 时,Tab 会随着 Jellybean 和 kitkat 设备中的页面导航一起滚动,但在 Lollipop 中,Tab 单独滚动并且它是工作文件。例如:如果 1,2,3..10 是选项卡并且如果我滚动选项卡,它会滚动并且每次滚动都会导航布局。如果我滚动,Tab 会导航到第二个选项卡,然后是第三个选项卡,依此类推。

  2. 向上导航在 Jellybean 和 Kitkat 设备中不起作用。如果我滑动工具栏,页面导航会发生 Tab 滚动(上述问题)。

任何人都可以告诉我可能是什么问题以及我需要在哪一部分进行检查和排序。如果提供电子邮件以便更好地了解问题,我可以发送 APK 文件。

我是 android 的新手,需要一些帮助来解决这个问题。

最佳答案

也许您应该以编程方式设置选项卡模式?尝试在 TabLayaut 实例上调用 setTabMode 方法 tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

我不知道为什么它对你不起作用,但几周前我测试了这些模式,对我来说可滚动模式适用于所有 Android 版本。

同时检查您是否使用了最新版本的设计支持库,也许您使用了一些有问题的旧版本?

关于android - tabMode ="scrollable"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925636/

相关文章:

android - 如何检查字节java中是否设置了位

android - Android 中的 ViewPager 正在全屏显示?

android - 重新选择选项卡时 fragment 为空白

java - android - 回收适配器未出现在 View 寻呼机中

android - 只是我...还是 android honeycomb 3.0 模拟器真的很慢?

android - 每次我在 View 寻呼机中更改或滑动页面时都会调用 onDraw() 方法

Android AppWidgetProviderInfo 图标 id

android - 水平线性布局中的右对齐按钮

java - 动态添加布局,以与其他布局重叠

android - 漏洞 : exchange between fragments