【问题标题】:Display icons on FragmentPagerAdapter tabs在 FragmentPagerAdapter 选项卡上显示图标
【发布时间】:2015-09-25 09:43:47
【问题描述】:

这个例子是在 Xamarin 中使用 C# 创建的,如果你知道 Java 的答案,我也可以将它转换成 C#

我正在使用FragmentPagerAdapter 将三个不同的片段显示为选项卡。我可以在 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] 的三倍。看起来好像根本没有将图标添加到标题中。

我在这里做错了吗?感谢您的帮助!

【问题讨论】:

    标签: android tabs xamarin


    【解决方案1】:

    默认情况下,由 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" />
    

    【讨论】:

    • 我试过这个并将样式应用到 Tablayout 像这样 android:textAppearance="@style/MyCustomTabLayout" 但它不起作用我刚得到'[icon]'字符串
    • 你是对的。您需要将样式应用于 TabLayout。我将编辑我的答案。
    • 什么鬼,OP要求图标,答案是关于文字,这是怎么回事?
    【解决方案2】:

    就像你说的那样,我们必须将上述样式应用为

    style="@style/MyCustomTabLayout"
    

    但不是

    android:textAppearance="@style/MyCustomTabLayout"
    

    更多信息请参考这里 https://guides.codepath.com/android/Google-Play-Style-Tabs-using-TabLayout

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      相关资源
      最近更新 更多