2016-11-17 7 views
0

スライドタブのライブラリSmartTabLayout - ogaclejapanを使用しています。親スライディングタブの1つのタブの中にもう1つスライディングタブを追加したい。しかし私がそうするとき、私は第2のスライドタブを見ることができません。タブ内にスライディングタブを追加する

はここで画像First is the parent sliding tab. And in 'trains' I am adding another same sliding tab

を参照してください親スライドタブが含まれてい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); 

Similary私はhereから解決策を見つけることを試みた '電車' 内部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); 

を設計しました。しかし、残念ながら私は答えを見つけることができませんでした。どのViewPagerがネストされている場合に呼び出されるべきか疑問に思っている場合は、例として状況を取りましょう - 左/右にスワップするときに最初の子ビューページャーが呼び出され、子ビューページャーと親ビューのそれぞれの左端/ページャーが呼び出されます。または、親のタブをクリックして変更することもできます。

答えて

0

Google Material Designガイドラインでは、ネストされたタブの使用が許可されていません。それはプログラミングの習慣としては悪いことです。

Googleデザインガイドラインに準拠するようにUIを変更することを強くおすすめします。

+0

代替候補を提案できます – Swarnveer

+0

代替手段は、アプリの要件に基づいています。それはあなたのアプリが何をしたいかによって異なります。ドロップダウン、ボタン、グリッドアイテムなど、他の気の利いた回避策を追加することができます。アプリの要件に完全に依存します。 – AlphaQ

関連する問題