2016-07-27 301 views
1

假設我想基於以下條件 1.選擇的Un中的選項卡標籤tablayout設置顏色=藍色 2.當前選項卡=綠色 3.選擇選項卡=紅色如何更改tablayout中選定選項卡的顏色?

這裏我使用下面的代碼改變顏色選擇,而當前標籤

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- UNSELECTED TAB STATE --> 
    <item android:state_selected="false" android:state_pressed="false"> 
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
      <!-- Bottom indicator color for the UNSELECTED tab state --> 
      <item android:top="-5dp" android:left="-5dp" android:right="-5dp"> 
       <shape android:shape="rectangle"> 
        <stroke android:color="#65acee" android:width="2dp"/> 
       </shape> 
      </item> 
     </layer-list> 
    </item> 
    <!-- Current TAB STATE --> 
    <item android:state_selected="true" android:state_pressed="false"> 
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
      <!-- Tab background color for the SELECTED tab state --> 
      <item> 
       <shape> 
        <solid android:color="#cef9ff"/> 
       </shape> 
      </item> 
      <!-- Bottom indicator color for the SELECTED tab state --> 
      <item android:top="-5dp" android:left="-5dp" android:right="-5dp"> 
       <shape android:shape="rectangle"> 
        <stroke android:color="#5beea6" android:width="2dp"/> 
       </shape> 
      </item> 
     </layer-list> 
    </item> 
</selector> 

,但未能保留先前選定的標籤

請參閱本image

汽車讀數選擇狀態 拍攝照片和簽名是未選中狀態

正在使用視圖尋呼機......從車上閱讀移動拍攝的照片後,...汽車閱讀背景應該是綠色

+0

2.當前標籤=綠色3.所選標籤=紅色的差異? –

+0

假設是在標籤位置2然後標籤2是當前標籤 –

+0

如果您在標籤位置2,那麼它必須選擇標籤右側? –

回答

0

你將無法爲此使用選擇器。因爲一旦您選擇了新選項卡,Android會將舊選項卡標記爲未選中狀態。你需要做的是創建一個TabLayout.OnTabSelectedListener(),然後在onTabSelected和onTabUnselected方法中,您可以獲取該選項卡的customView並在其上設置背景顏色。

注意:這要求您爲選項卡設置自定義視圖。否則,您無法以編程方式更改背景顏色。使用默認選項卡布局更改背景顏色的唯一方法是通過不適用於您的情況的樣式。

+0

可能更容易,更好地更改圖標(或iconLevel,如果可能)以標記標籤爲已讀。 – lionscribe

+0

是的,我會同意改變圖標比試圖改變背景色要容易得多。 – Ben

相關問題