我使用com.android.support:design
庫中的新TabLayout
。我想更改選定/未選中選項卡的背景。 我看源代碼,發現只有tabBackground
屬性,改變所有標籤的顏色,並不控制選定的標籤顏色。TabLayout標籤樣式
如何控制選定/未選中的選項卡背景?
我使用com.android.support:design
庫中的新TabLayout
。我想更改選定/未選中選項卡的背景。 我看源代碼,發現只有tabBackground
屬性,改變所有標籤的顏色,並不控制選定的標籤顏色。TabLayout標籤樣式
如何控制選定/未選中的選項卡背景?
定義:
<style name="AppTabLayout" parent="Widget.Design.TabLayout">
<item name="tabMaxWidth">@dimen/tab_max_width</item>
<item name="tabIndicatorColor">?attr/colorAccent</item>
<item name="tabIndicatorHeight">4dp</item>
<item name="tabPaddingStart">6dp</item>
<item name="tabPaddingEnd">6dp</item>
<item name="tabBackground">?attr/selectableItemBackground</item>
<item name="tabTextAppearance">@style/AppTabTextAppearance</item>
<item name="tabSelectedTextColor">@color/range</item>
</style>
<!-- for text -->
<style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textSize">12sp</item>
<item name="android:textColor">@color/orange</item>
<item name="textAllCaps">false</item>
</style>
應用:
<android.support.design.widget.TabLayout
style="@style/AppTabLayout"
app:tabTextAppearance="@style/AppTabTextAppearance"
android:layout_width="match_parent"
.... />
我讀How to Style ActionBar, tab background on selected tab並找出該怎麼做。這實在是類似的問題,但是我發現真棒解決方案專爲TabLayout
:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/tab_layout_color"
app:tabIndicatorHeight="48dp"
app:tabIndicatorColor="@color/selected_tab_color"
/>
注意layout_height
和tabIndicatorHeight
具有相同的高度。所以你用這種方式獲得漂亮的過渡動畫。
這個解決方案有一個錯誤 - 指標覆蓋標籤文本 – IlyaEremin
我也遇到了這個問題。我只是在整個項目搜索tabIndicatorColor
,發現一些R.java
下面的代碼:
@see #TabLayout_tabBackground
@see #TabLayout_tabContentStart
@see #TabLayout_tabGravity
@see #TabLayout_tabIndicatorColor
@see #TabLayout_tabIndicatorHeight
@see #TabLayout_tabMaxWidth
@see #TabLayout_tabMinWidth
@see #TabLayout_tabMode
@see #TabLayout_tabPadding
@see #TabLayout_tabPaddingBottom
@see #TabLayout_tabPaddingEnd
@see #TabLayout_tabPaddingStart
@see #TabLayout_tabPaddingTop
@see #TabLayout_tabSelectedTextColor
@see #TabLayout_tabTextAppearance
@see #TabLayout_tabTextColor
所以,問題就解決了。願這對你有所幫助。
即我用IDEA
爲什麼「問題解決了」?由此,我們如何設置選定的標籤背景? – AnhTriet
如果你看看TabLayout.class
你會發現對標籤的實際佈局內TabView.class
。它與isSelected
屬性的佈局相同。選擇標籤也會對這種影響,因此所有你需要做的是創造選擇背景繪製像
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/tab_bg_selected"/>
<item android:drawable="@color/tab_bg_unselected"/></selector>
並將其連接到tabBackground屬性如在XML像
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabBackground="@drawable/tab_bg"
app:tabIndicatorHeight="4dp"/>
的重複可能[如何風格ActionBar中,所選的選項卡標籤背景](http://stackoverflow.com/questions/13285490/how-to-style-actionbar-tab-background-on -selected-tab) – jlopez
試試這個https://abhishekdabral.wordpress.com/2015/04/03/bottom-tabs-with-fragment-state-pager-adapter/?preview=true&preview_id=25&preview_nonce=49237562f9 – Abhishek
@Doraemon this文章有可怕的代碼填充,並且不包含關於'TabLayout'的信息,對不起。 – IlyaEremin