如何用 TabLayout 中的图标替换字符串?
How to replace string with the icon in TabLayout?
我正在尝试使用 TabLayout 制作 ViewPager 并在 TabLayout 中使用图标而不是文本。我尝试了教程、Whosebug 上的答案,但没有任何帮助解决我的问题。
我的 TabLayout
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
style="@style/MyCustomTabLayout"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabMode="fixed"
local:theme="@style/ViewPagerTheme"
/>
MyCustomTabLayout 样式
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/MyCustomTextAppearance</item>
</style>
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>
</style>
我的 PagerAdapter getPageTitle()
@Override
public CharSequence getPageTitle(int position) {
Drawable image = ContextCompat.getDrawable(App.getContext(), PageInfo.getByPosition(position).getIConResId());
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
SpannableString sb = new SpannableString(" ");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
我正在使用带有集合的样式
<item name="textAllCaps">false</item>
但是当我改变时SpannableString sb = new SpannableString(" ");
像这样
SpannableString sb = new SpannableString("a");
我的 TabLayout 反映了大写字母 A,如果留空 space 我的 TabLayout 没有任何价值并且是空白的,我想问题应该出在这一步,但我不知道如何解决它。
试试这个:
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setIcon(R.drawable.your_icon);
}
您可以在选项卡布局中设置图标而不是字符串,为此请使用以下代码行。
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setIcon());
这是工作示例尝试一次https://drive.google.com/open?id=0ByZqApcbZkTqcUtxaXlfU3FETjg
我正在尝试使用 TabLayout 制作 ViewPager 并在 TabLayout 中使用图标而不是文本。我尝试了教程、Whosebug 上的答案,但没有任何帮助解决我的问题。
我的 TabLayout
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
style="@style/MyCustomTabLayout"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabMode="fixed"
local:theme="@style/ViewPagerTheme"
/>
MyCustomTabLayout 样式
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/MyCustomTextAppearance</item>
</style>
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>
</style>
我的 PagerAdapter getPageTitle()
@Override
public CharSequence getPageTitle(int position) {
Drawable image = ContextCompat.getDrawable(App.getContext(), PageInfo.getByPosition(position).getIConResId());
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
SpannableString sb = new SpannableString(" ");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
我正在使用带有集合的样式
<item name="textAllCaps">false</item>
但是当我改变时SpannableString sb = new SpannableString(" ");
像这样
SpannableString sb = new SpannableString("a");
我的 TabLayout 反映了大写字母 A,如果留空 space 我的 TabLayout 没有任何价值并且是空白的,我想问题应该出在这一步,但我不知道如何解决它。
试试这个:
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setIcon(R.drawable.your_icon);
}
您可以在选项卡布局中设置图标而不是字符串,为此请使用以下代码行。
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setIcon());
这是工作示例尝试一次https://drive.google.com/open?id=0ByZqApcbZkTqcUtxaXlfU3FETjg