gpt4 book ai didi

android - 在 FragmentPagerAdapter 选项卡上显示图标

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:25 25 4
gpt4 key购买 nike

此示例是使用 C# 在 Xamarin 中创建的,如果您知道 Java 中的答案,我也可以将其转换为 C#

我正在使用 FragmentPagerAdapter将三个不同的 fragment 显示为选项卡。我可以像这样在 Tab 标题中显示一些文本:

public override Java.Lang.ICharSequence GetPageTitleFormatted(int position)
{
return new Java.Lang.String("Tab: " + position);
}

这工作得很好:我看到三个标签,标题为 Tab: 0Tab: 1Tab: 2

现在,我想用一些图标替换文本。我正在尝试做与 PagerSlidingTabStrip 相同的事情,使用 SpannableStringImageSpan

public override Java.Lang.ICharSequence GetPageTitleFormatted(int position)
{
var image = Application.Context.Resources.GetDrawable(Resource.Drawable.icon);
image.SetBounds(0, 0, image.IntrinsicWidth, image.IntrinsicHeight);

var spannableString = new Android.Text.SpannableString("[icon]");
var imageSpan = new Android.Text.Style.ImageSpan(image, Android.Text.Style.SpanAlign.Bottom);
spannableString.SetSpan(imageSpan, 0, 1, Android.Text.SpanTypes.ExclusiveExclusive);
return spannableString;
}

可悲的是,我现在看到的是 [icon] 作为 header 的三倍。看起来好像图标根本没有添加到标题中。

我是不是做错了什么?感谢您的帮助!

最佳答案

默认情况下,TabLayout 创建的选项卡将 textAllCaps 属性设置为 true,这会阻止 ImageSpans 被渲染。您可以通过更改 tabTextAppearance 属性来覆盖此行为。

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

然后您可以像这样将 MyCustomTabLayout 样式添加到您的 TabLayout:

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/MyCustomTabLayout" />

关于android - 在 FragmentPagerAdapter 选项卡上显示图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32779339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com