I need to make my TabLayout use all available space, so I use app:tabMode="fixed"
, app:tabGravity="fill"
. I want titles of my TabItems be singleline and if the titles cannot be shown in full, a part is replaced by ... (android:ellipsize = "end"
behavior). I want something like this .
I try to gain it usings styles but failed.
Part of my fragment layout `
<com.google.android.material.tabs.TabLayout
android:id="@+id/credit_details_tab_layout"
style="@style/CreditDetailsTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/credit_details_text_deposit_up_to"
app:tabMode="fixed"
app:tabGravity="fill"
android:maxWidth="0dp"
app:tabPaddingStart="0dp"
app:tabPaddingEnd="0dp"
android:layout_marginHorizontal="@dimen/spacing_M">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/information"/>
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/history"/>
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/management"/>
</com.google.android.material.tabs.TabLayout>
` from styles
<style name="CreditDetailsTabLayout" parent="Widget.Design.TabLayout">
<item name="background">@color/black_for_tabs</item>
<item name="tabRippleColor">@android:color/transparent</item>
<item name="android:textAlignment">center</item>
<item name="tabBackground">@color/white</item>
<item name="tabTextAppearance">@style/CreditDetailsTabLayoutTextAppearance</item>
</style>
<style name="CreditDetailsTabLayoutTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textSize">16sp</item>
<item name="textAllCaps">false</item>
<item name="singleLine">true</item>
<item name="textColor">@color/black_for_tabs</item>
<item name="android:ellipsize">end</item>
<item name="maxLines">1</item>
and finally screen
Can I achieve this without using CustomView ?