【发布时间】:2015-10-03 17:53:51
【问题描述】:
我正在使用来自 Android 设计支持库的 TabLayout。我正在使用材料设计主题。下面是代码
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>
scrollableTabActivity.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 设备上,我面临两个问题,
当我滚动 Tab 时,Tab 与 Jellybean 和 kitkat 设备中的页面导航一起滚动,但在 Lollipop Tab 中单独滚动并且它是工作文件。例如:如果 1,2,3..10 是选项卡,如果我滚动选项卡,它会滚动,并且每次滚动都会导航布局。如果我滚动,Tab 会导航到第二个选项卡,然后是第三个,依此类推。
向上导航在 Jellybean 和 Kitkat 设备中不起作用。如果我滑动工具栏,页面导航会发生 Tab 滚动(上述问题)。
谁能告诉我可能是什么问题以及我需要检查和排序的部分。如果提供电子邮件,我可以发送 APK 文件以便更好地了解问题。
我是 android 新手,需要一些帮助来解决这个问题。
【问题讨论】:
-
我通过为标签布局“activity_scrollable_Tab.xml”添加 xmlns:app="schemas.android.com/apk/res-auto" 解决了这个问题。
标签: android android-layout android-fragments