1

我发现 Android TextView 和 ellipsize 属性有一个奇怪的行为。当文本较长且应用了 ellipsize 属性时,文本的原始位置会丢失,文本显得有点靠上。

是的,我可以以编程方式解决它,但我想知道它是否可能是一个错误或者我做错了什么。

一个非常简单的例子来测试它。更改两个 textview 的文本以查看是否像我在最后一个屏幕截图中显示的那样省略了文本。如果您比较屏幕截图,您会发现问题。

我已经用 'dp' 和 'sp' 对其进行了测试,看看它是否可能是不同的行为。但事实并非如此。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white">

    <View
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="50dp"
        android:background="@android:color/holo_green_dark" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="23.3dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Hello World! (dp textSize)"
        android:textColor="@android:color/black"
        android:textSize="25dp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="150dp"
        android:background="@android:color/holo_blue_dark" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="123.2dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Hello World! (sp textSize)"
        android:textColor="@android:color/black"
        android:textSize="25sp" />

</RelativeLayout>

块颜色下的短文本完美粘合

简单地用长字符串更改文本,文本没有完美粘合

解决方案:

解决方案是使用属性“singleLine”,然后问题就消失了。但 AndroidStudio 告诉我'singleLine 已被弃用'。

4

1 回答 1

4

我对字体“Courier New”也有类似的问题——当 1 行文本被椭圆化时,它向下移动了几个像素。我的问题的解决方案是添加:

android:includeFontPadding="false"

到我使用该字体的任何地方。

于 2017-03-03T13:41:19.410 回答