我遇到了与android TabLayout棘手的问题
import android.support.design.widget.TabLayout;
当我选择左边最前面的标签页,然后向右滚动标签页并选择右边最前面的标签页时,TabLayout首先再次显示左边的标签页,然后向右滚动到所选的标签页。
void setupTabs(ViewPager viewPager, TabLayout tabLayout) {
ProductsPagerAdapter adapter = new ProductsPagerAdapter(getChildFragmentManager(), rootCategory.getChildCategories());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
setStartingSelection(viewPager, adapter);
}
private void setStartingSelection(ViewPager viewPager, ProductsPagerAdapter adapter) {
for(int i = 0 ; i < adapter.getCount(); i++){
String title = (String) adapter.getPageTitle(i);
if(title.equals(selectedCategory.getName())){
viewPager.setCurrentItem(i);
break;
}
}
}
和布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/toolbar_color"
app:navigationIcon="@drawable/ic_back_white"
app:title="@string/title_transport"
app:titleTextColor="@color/title_color"/>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable"
app:tabTextColor="@color/white"
app:tabIndicatorColor="@color/tab_indicator"
app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</LinearLayout>
7条答案
按热度按时间vsikbqxv1#
你可以试试这个代码
也可以直接对最后一行执行此操作
wxclj1h52#
实际上你正在处理滚动问题。是的。问题是,TabLayout扩展了HorizontalScrollView。尝试类似这样的东西。
mkh04yzy3#
我认为使用TabLayoutMediator是值得的
它看起来就像这样
kh212irz4#
按如下所示更改方法:
希望这对你有帮助。
i34xakig5#
经过大量的搜索,我明白我需要另一个组件,它看起来像TabLayout,但不会是TabLayout。所以我使用ViewPagerIndicator。
它与TabLayout非常相似,虽然它缺少TabLayout中存在的很酷的选择动画和选定的制表符动画。它也不会调整文本大小以适应制表符,这很好,也不会调整制表符大小以适应文本,这很糟糕(尝试了我知道的所有样式参数-无法使其换行)。
但它选择标签很好,没有额外的滚动。不幸的是,AndroidArsenal没有包含解决方案,这比这更好(至少我搜索时没有)。
but5z9lq6#
你可以使用这个自定义的ViewPager,也许它可以帮助你:)
wz8daaqr7#
尝试到wrap制表布局在水平scoll视图象这样