在 Android 设计库中使用 TabLayout 的带有图标的选项卡
Tab with icon using TabLayout in Android Design Library
我正在尝试使用 android 设计库中的新 TabLayout 创建仅包含图标的应用栏。
像这样:
如何使用新的 TabLayout Android 设计库来实现。
对此是否有简单的解决方案,或者我必须只使用 setCustomView。我试图避免使用它。因为我没有得到像上图这样的图标的色调。
我试着这样写:
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_dashboard))
但是当我 select 选项卡
时,图标仍然保持相同的颜色
您必须为图标创建一个 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>
我是这样解决的:
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)
我是这样使用的:
如@Budius 所示,在 drawable 中创建了一个 xml 文件。
代码中:
tabLayout.getTabAt(0).setIcon(R.drawable.settings_tab_drawable);
等等。
我正在尝试使用 android 设计库中的新 TabLayout 创建仅包含图标的应用栏。
像这样:
如何使用新的 TabLayout Android 设计库来实现。
对此是否有简单的解决方案,或者我必须只使用 setCustomView。我试图避免使用它。因为我没有得到像上图这样的图标的色调。
我试着这样写:
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_dashboard))
但是当我 select 选项卡
时,图标仍然保持相同的颜色您必须为图标创建一个 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>
我是这样解决的:
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)
我是这样使用的: 如@Budius 所示,在 drawable 中创建了一个 xml 文件。
代码中:
tabLayout.getTabAt(0).setIcon(R.drawable.settings_tab_drawable);
等等。