如何在使用自定义图标字体时修复Android Lollipop中的字体基线?

6

我目前在我的一个Android项目中使用FontAwesome。我主要用它来在某些按钮上的文本左侧显示图标。我注意到自从将我的一个测试设备升级到Lollipop后,图标开始下垂到按钮文本的基线以下。

请参见下面的图像:

Android KitKat(Nexus 7)- 好:

KitKat

Android Lollipop(Nexus 4)- 坏:

Lollipop

请注意,第一张图片中图标的底部位于文本的基线上,而第二张图片中图标的底部在基线下方。

代码:

<string name="button_text_logout"> LOG OUT</string>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:textSize="@dimen/text_size_menu_item"
    android:textColor="@color/white"
    android:gravity="center_vertical"
    android:text="@string/button_text_logout"
    android:paddingLeft="@dimen/action_item_padding"
    android:paddingRight="@dimen/action_item_padding"/>

Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fontawesome-webfont.ttf");
logOutTextView.setTypeface(typeface);

我正在使用fa-sign-out图标。在运行Android 5.0之前版本的所有设备上,该代码都能正常工作。是否有任何方法可以解决这个问题?


一种糟糕的方法是拥有两个版本,一个用于小于5.0,另一个用于大于或等于5.0。但肯定有更好的方式。 - Matthew V Carey
我正在尝试避免这样做。当然,我可以将所有文本视图分成两个部分,然后将图标向上移动几个dps。但是,当涉及到按钮时,这会成为一个问题。如果可能的话,我想避免创建自定义视图。 - BVB
2
虽然有些晚,但可能对某些人有帮助。曾经使用android:includeFontPadding="false"解决了这个问题。 - QAMAR
@QAMAR 你应该把这个变成一个答案,并且让它成为被接受的答案。这解决了我的问题,谢谢! - dimsuz
1个回答

3

虽然有点晚,但希望能对某些人有所帮助。曾经使用 android:includeFontPadding="false" 解决过这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接