2016-08-23 9 views
2

Android 7.0にアップグレードして、すべてのSlidingTabLayoutバーに下部に余分な空白が表示されるようになりました。これがAndroidチームによって意図されているかどうかはわかりませんが、新しい空白を取り除く方法はありますか?Android 7.0 NのSlidingTabLayoutバーに余分な空白がありますか?

スライディングタブレイアウト:https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabLayout.html

スライディングタブストリップ:私はここで見つけることができるのAndroidによって提供されたコード使用しています

Extra White Space on SlidingTabLayout bar

ここ https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabStrip.html

はの抜粋です私のレイアウトコード:

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/tool_bar" 
     android:layout_height="56dp" 
     android:layout_width="match_parent" 
     android:background="@drawable/toolbar_gradient" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:theme="@style/Base.ThemeOverlay.AppCompat.Dark" /> 

    <com.airsenze.wineinsider.controllers.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white"/> 

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

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

ありがとうございます!もう情報が必要な場合は教えてください。

+0

「ではありませんこれがAndroidチームのコードではなく、あなたのコードです。あなたはAndroidの例から始めましたが、このようなAndroidの例は必ずしもAPIレベルで一貫しているとは限りません。それらは例であり、ライブラリクラスをサポートしていません。実際には、コードの変更されたバージョンを自分で管理する必要があります。 – CommonsWare

+0

ええ、私はそれを理解しています。 Androidチームを何かのせいにしているわけではありません。私は空白を取り除くために徹底的に努力してきましたが、何も動かないようです。誰かがそれを取り除くための迅速な解決策を持っているかどうかは不思議です。 – Lunkie

+0

ツールバーの高さを 'wrap_content'に設定してみませんか? –

答えて

10

これは、distributeEvenlyがtrueの場合に発生します。ただ、SlidingTabLayout.javaクラスのpopulateTabStrip()方法で

lp.width = 0; 

をコメントし、あなたの問題が解決されます。

+0

これはヌガーデバイスでうまくいきます!私はそれが既に働いていた以前のバージョンに影響を与えるかどうか疑問に思います...ありがとう! –

+1

はい。私はそれをAndroid 4.0で最後のバージョン(7.0)にテストしました。これは問題ありません。 – Afshin

+1

最初の問題を修正する一方で、このソリューションはもう1つを追加します。タブはもはや均等に分散されません。私は "lp.width = 0"を "lp.width = ViewGroup.LayoutParams.MATCH_PARENT"に置き換えました。これはうまくいくようです。 – MihaiW

0

は、コンポーネントスタイルファイルがそれ以外のコンポーネントは、上記の30DPが表示されます、私は私のコンポーネントのスタイルファイルに

--<item name="android:windowIsFloating">false</item>-- 

この行を削除し、私はちょうどBottomDialogと同様のバグを見つける

--<item name="android:windowIsFloating">false</item>-- 

を宣言していてい本当の底

android:theme="@style/AppTheme.AppBarOverlay" 

削除項目このバグをacuseどの項目を見つけるために一つずつ: 私はあなたがこのファイルをチェックすべきだと思います。

0

私はそれがあなたのために働くかどうかは考えていませんが、あなたのレイアウトでこれを試してみてください。カスタム高さ(48dp)を設定し、ヌガーの条件を設定します。それは残念ながら私のために働く:)。

<com.airsenze.wineinsider.controllers.SlidingTabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:background="@color/white"/> 
0

タブのTextViewにmax linesを1に設定する必要があります。

1.変更SlidingTabLayout:

protected TextView createDefaultTabView(Context context) { 
    TextView textView = new TextView(context); 
    textView.setMaxLines(1); 
    ... 
} 

2.カスタムタブのレイアウト例えば

は、2つの方法があります

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="?selectableItemBackground" 
       android:gravity="center_horizontal" 
       android:orientation="vertical" 
       android:paddingBottom="8dp" 
       android:paddingTop="8dp"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAllCaps="true" 
     android:textColor="@color/text_tab" 
     android:maxLines="1" <=============attention============== 
     android:textSize="12dp" 
     android:textStyle="bold"/> 

</LinearLayout> 
関連する問題