10

我試圖在android設計庫中使用新的TabLayout來創建僅帶圖標的應用程序欄。在Android設計庫中使用TabLayout的圖標選項卡

這樣的: enter image description here

我怎麼能做到這一點使用新TabLayout Android的設計庫。

是否有一個簡單的解決方案,或者我只能使用setCustomView。我試圖避免使用它。因爲我沒有像上面的圖片那樣獲得圖標的色調。

我嘗試寫這樣的:

tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_dashboard)) 

但是圖標還停留在相同的顏色時,我選擇的標籤

+0

我還沒有使用'TabLayout'太原諒我了,如果這沒有幫助,但你有沒有嘗試過使用'TabLayout#setTabTextColors(int normalColor,int selectedColor)'?我不確定它是否會給你想要的東西,但是嘗試設置它不會有什麼壞處? –

回答

-2

我解決了這個問題是這樣的:在你的java代碼

tint_tab.xml

<com.hannesdorfmann.appkit.image.TintableImageView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
app:tint="@color/tab_color_selector"/> 

TintableImageView tab1 = (TintableImageView) LayoutInflater.from(this).inflate(R.layout.tint_tab, null); 
tab1.setImageResource(R.drawable.ic_dummy); 
mTabLayout.getTabAt(0).setCustomView(tab1) 

裁判:https://github.com/sockeqwe/appkit/blob/master/image/src/main/java/com/hannesdorfmann/appkit/image/TintableImageView.java

9

你必須創建的圖標selector。例如:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/ic_dashboard_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/ic_dashboard_selected" 
      android:state_selected="true" /> 
    <item android:drawable="@drawable/ic_dashboard_normal" /> 
</selector> 
+3

對於新的android開發人員來說,這個問題陷入了困境:這個文件應該保存在drawable目錄中(例如'my_icon.xml')。並且可以像使用常規的可繪製圖標一樣使用代碼進行訪問。 (例如'R.drawable.my_icon') – ntsh

+1

所以如果你有4個標籤,我們會保留4個選擇器?這將是不好的我認爲.. – Manikanta

+1

@Manikanta你已經有了每個標籤的多個圖標狀態,以顯示按下,聚焦等。選擇器是維護圖標之間關係的一種非常方便的方式。這種技術大大簡化了佈局文件,因爲它們只需要處理一個「drawable」選擇器,而不需要知道不同的狀態。 –

1

我用就如 這: 創建了一個xml文件,如@Budius所示。

代碼: tabLayout.getTabAt(0).setIcon(R.drawable.settings_tab_drawable);

等。

相關問題