マテリアルデザインライブラリを使用して、CoordinatorLayout
、AppBarLayout、RecyclerView
およびTabLayout
を使用してレイアウトを作成しています。
私の問題は、Tablayout
にタブインジケーターが表示されないことです。以下は、AppCompactActivity
で使用しているxmlファイルです。
<Android.support.design.widget.CoordinatorLayout
Android:id="@+id/coodinate_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_above="@+id/btn_next_screen">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/list_recycle"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginBottom="30dp"
Android:background="@color/white"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
<Android.support.design.widget.AppBarLayout
Android:id="@+id/abar_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar_home"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="?attr/colorPrimary"
Android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
>
</Android.support.v7.widget.Toolbar>
<Android.support.design.widget.TabLayout
Android:id="@+id/tab_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabBackground="@color/tab_bg"
app:tabIndicatorColor="@color/tab_indicator"
app:tabIndicatorHeight="5dp"
app:tabMode="fixed"
></Android.support.design.widget.TabLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.design.widget.FloatingActionButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="15dp"
app:layout_anchor="@+id/list_recycle"
app:layout_anchorGravity="bottom|right"
Android:id="@+id/floatin_ab_home"
app:fabSize="mini"
Android:src="@drawable/ic_content_add"
/>
</Android.support.design.widget.CoordinatorLayout>
以下は、タブインジケーターが表示されていない画面です。
デザインサポートライブラリのバグだと思います。両方のプロパティを同時に適用する場合
app:tabBackground="@color/tab_bg"
app:tabIndicatorColor="@color/tab_indicator"
背景色オーバーラップタブインジケーター。そのため、タブインジケーターは表示されません。
TabBackground colorプロパティを削除すると、インジケーターが表示されます。
[2015年6月25日に更新]
私が言ったようにそれはデザインサポートライブラリのバグです。 Androidバグソース。ここに参照があります https://code.google.com/p/Android/issues/detail?id=17654 に報告しました。
したがって、この問題のステータスはFutureReleaseであるため、バグが修正されます。そしてそれは将来の図書館に来るでしょう。
[2015年7月20日更新]
バグは修正され、v22.2.1でリリースされました。上記のリンクでも確認できます。
以下の方法を使用できます
1 xml app:tabIndicatorColor = ""を変更して、インジケーターの色を設定します
2コスチュームテーマの作成
<style name="AppTheme.TabStyle" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/AppTheme.TextStyle</item>
<item name="tabTextColor">@color/primaryDark</item>
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabIndicatorColor">@color/primaryDark</item>
<item name="tabIndicatorHeight">3dp</item>
<item name="Android:background">?attr/colorPrimary</item>
</style>
<style name="AppTheme.TextStyle" parent="TextAppearance.Design.Tab">
<item name="Android:textSize">14sp</item>
<item name="textAllCaps">true</item>
</style>
タブレイアウトにテーマを設定
このバグセットの背景色をプログラムで修正しました
tabLayout.setBackgroundColor(getResources().getColor(R.color.primary));
またはxmlで
Android:background="@color/primary"
しかし、このように背景色を設定したときに問題があるかどうかはわかりません
どうぞ.. :)
変更あなたの属性
app:tabBackground= "@ color/tab_bg"
に
Android:background= "@ color/tab_bg"
あなたの最終的なコード。
<Android.support.design.widget.TabLayout
Android:id="@+id/tab_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/tab_bg"
app:tabIndicatorColor="@color/tab_indicator"
app:tabIndicatorHeight="5dp"
app:tabMode="fixed">
</Android.support.design.widget.TabLayout>
RecyclerViewをメインコンテンツとして使用している場合は、RecyclerViewを含むViewPagerを使用し、viewpage属性を必ず指定してくださいapp:layout_behavior="@string/appbar_scrolling_view_behavior"