【问题标题】:Adding SlidingTab inside tab在选项卡内添加 SlidingTab
【发布时间】:2016-11-18 02:22:27
【问题描述】:

我正在使用一个用于滑动 tabSmartTabLayout - ogaclejapan 的库。我想在父滑动选项卡的一个选项卡内再添加一个滑动选项卡。但是当我这样做时,我看不到第二个滑动标签。

参考图片

这是包含父滑动选项卡的 MainActivity。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"

android:id="@+id/root"
tools:context="com.virtualsquadz.letsgo.MainActivity">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:id="@+id/topBar"
    android:layout_marginTop="@dimen/_16sdp"
    android:paddingBottom="@dimen/_5sdp">
    <ImageButton
        android:layout_width="wrap_content"
        android:id="@+id/backButton"
        android:layout_height="wrap_content"
        android:src="@drawable/back_0"
        android:background="@null"
        android:layout_alignParentLeft="true"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/title_transport"
        android:text="Getting Around"
        style="@style/title_transport"
        android:paddingTop="@dimen/_2sdp"
        android:layout_centerInParent="false"
        android:layout_centerHorizontal="true"
        />

</RelativeLayout>
<com.ogaclejapan.smarttablayout.SmartTabLayout
    android:id="@+id/viewpagertab"
    android:layout_below="@id/topBar"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    app:stl_indicatorAlwaysInCenter="false"
    app:stl_indicatorWithoutPadding="false"
    app:stl_indicatorInFront="false"
    app:stl_indicatorInterpolation="smart"
    app:stl_indicatorGravity="bottom"
    app:stl_indicatorColor="#40C4FF"
    app:stl_indicatorThickness="4dp"
    app:stl_indicatorWidth="auto"
    app:stl_indicatorCornerRadius="2dp"
    app:stl_overlineColor="#4D000000"
    app:stl_overlineThickness="0dp"
    app:stl_underlineColor="#4D000000"
    app:stl_underlineThickness="1dp"
    app:stl_dividerColor="#4D000000"
    app:stl_dividerThickness="1dp"
    app:stl_defaultTabBackground="?attr/selectableItemBackground"
    app:stl_defaultTabTextAllCaps="true"
    app:stl_defaultTabTextColor="@color/flight_white"
    app:stl_defaultTabTextSize="@dimen/_12sdp"
    app:stl_defaultTabTextHorizontalPadding="@dimen/_16sdp"
    app:stl_defaultTabTextMinWidth="0dp"
    app:stl_distributeEvenly="true"
    app:stl_clickable="true"
    app:stl_titleOffset="24dp"
    app:stl_drawDecorationAfterTab="false"
    />

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/viewpagertab"
    android:layout_marginTop="@dimen/_5sdp"
    />


</RelativeLayout>

MainActivity.java

SmartTabLayout viewPagerTab = (SmartTabLayout)      findViewById(R.id.viewpagertab);
    ViewPager viewPager=(ViewPager)findViewById(R.id.viewpager) ;

    ViewPagerItemAdapter adapter = new ViewPagerItemAdapter(ViewPagerItems.with(this)
            .add(R.string.transportOption1, R.layout.activity_flights)
            .add(R.string.transportOption2, R.layout.activity_train)
            .add(R.string.transportOption3, R.layout.activity_buses)
            .add(R.string.transportOption4, R.layout.activity_cars)
            .create());

    viewPager.setAdapter(adapter);
    viewPagerTab.setViewPager(viewPager);

我为 train.java 中的“火车”设计的类似物

SmartTabLayout viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab2);
    ViewPager viewPager=(ViewPager)findViewById(R.id.viewpager2) ;

    ViewPagerItemAdapter adapter = new ViewPagerItemAdapter(ViewPagerItems.with(this)
            .add(R.string.trainSearchOption1, R.layout.trainsearchoption1)
            .add(R.string.trainSearchOption2, R.layout.trainsearchoption2)
            .create());

    viewPager.setAdapter(adapter);
    viewPagerTab.setViewPager(viewPager);

我试图从here 找到解决方案。但不幸的是,我找不到答案。如果您想知道如果嵌套了应该调用哪个 ViewPager,那么以一种情况为例 - 向左/向右滑动时调用第一个子视图寻呼机,当我们分别处于子视图寻呼机的左/右极端时调用父视图寻呼机被调用。或者我们也可以点击 parent 的 tab 来改变它。

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    Google Material Design 指南不允许使用嵌套标签。这是一种糟糕的编程习惯。

    强烈建议修改您的 UI 以符合 Google 设计指南。

    【讨论】:

    • 你能推荐一个替代方案吗
    • 替代方案基于您的应用要求。这取决于您希望您的应用程序做什么。您可以添加其他漂亮的解决方法,例如下拉菜单、按钮、网格项目等。这完全取决于您的应用要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多