10

Я пытаюсь использовать новую TabLayout в библиотеке дизайна Android для создания панели приложений только с иконками.Вкладка с иконкой с помощью TabLayout в библиотеке Android Design

так: enter image description here

, как я могу сделать это с помощью нового TabLayout Android Design Library.

есть простое решение для этого, или я должен использовать только setCustomView. Я пытаюсь избежать его использования. потому что я не получил цвет оттенка для значка, подобного этому изображению выше.

я стараюсь писать так:

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

но значок все еще остаются в том же цвете, когда я выберите вкладку

+0

Я не использовал 'TabLayout', так что простите меня, если это не полезно, но вы пытались использовать его в' TabLayout # setTabTextColors (int normalColor, int selectedColor) '? Я не уверен, даст ли он вам то, что вы хотите, но это не помешает попробовать настроить его? –

ответ

-2

я решил так:

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"/> 

в вас Java код

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, наткнувшихся на этот вопрос: Этот файл должен быть сохранен в каталоге с возможностью рисования (например, 'my_icon.xml'). И можно получить доступ с помощью кода, как обычный значок с возможностью рисования. (например, 'R.drawable.my_icon') – ntsh

+1

, так что если у вас есть 4 вкладки, мы будем держать 4 селектора ?? это было бы плохо, я думаю .. – Manikanta

+1

@ Manikanta у вас уже есть несколько состояний значков для каждой вкладки, чтобы показать нажатые, сфокусированные и т. д. Селекторы - очень удобный способ поддержания взаимосвязи между значками. Этот метод значительно упрощает файлы макета, потому что им нужно иметь дело только с одним «поворотным» селектором вместо того, чтобы знать о разных состояниях. –

1

Я ему нравится это: создал файл xml в drawable, как показано @Budius.

в коде: tabLayout.getTabAt(0).setIcon(R.drawable.settings_tab_drawable);

и так далее.

Смежные вопросы