为什么单行中的TextView使用"结束"显示框?

Ars*_*war 20 android android-widget android-layout

我在Android中使用TextView,我想在TextView中以"."结尾显示1行,但最后给出[]类型框.我不知道为什么?我只是想把这个盒子拿出去,只显示以"......"结尾的文字

TextView结束时显示框

更新list_row.xml的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="85dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:cacheColorHint="#4C7B8D"
android:background="#4C7B8D">
<ImageView
    android:id="@+id/videoListImage"
    android:src="@drawable/audio_thumbnail60x60"
    android:layout_height="75dp"
    android:layout_alignParentLeft="true"
    android:layout_centerInParent="true"
    android:scaleType="fitXY"
    android:layout_width="75dp"
    android:padding="4dp"
    android:background="@color/light_gray" />
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginRight="5dp"
        android:layout_toLeftOf="@+id/next_arrow"
        android:orientation="vertical"
        android:gravity="center_vertical"
        android:paddingLeft = "5dp">
        <TextView
            android:id="@+id/row_title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textColor="@color/app_background_color"
            android:textSize="18sp"
            android:ellipsize="end"             
            android:maxLines="1" />
        <TextView
            android:id="@+id/row_dis"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textColor="@color/color_black"
            android:layout_marginRight="2dp"
            android:textSize="15sp"
            android:ellipsize="end"
            android:maxLines="1" />
        <TextView
            android:text="$7.50"
            android:id="@+id/audio_price_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:textColor="@color/color_white"
            android:textStyle = "bold"
            android:paddingLeft = "12dp"
            android:paddingRight = "12dp"
            android:background="@drawable/blue_round_cornor_background" />
    </LinearLayout>
    <ImageView
        android:id="@+id/next_arrow"
        android:src="@drawable/next_arrow"
        android:layout_toLeftOf="@+id/saved_purchased"
        android:scaleType="fitXY"
        android:layout_height="25dp"
        android:layout_width="18dp"
        android:layout_centerVertical="true"
        android:visibility = "gone"/>
    <ImageView
        android:id="@+id/saved_purchased"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop ="true"
        android:scaleType="fitXY"
        android:layout_height="25dp"
        android:layout_width="25dp"
        android:layout_marginRight="2dp"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是"next_arrow"的图像 在此输入图像描述

这是我在适配器中使用getView()的代码.

  String discription = listData.getDescription();
    if (discription != null && discription.length() > 0) {
        if (textViewDis != null) {
            textViewDis.setTypeface(titleFont);
            Log.e("data", ""+discription);
            discription.replaceAll("\r\n", "");
            textViewDis.setText(discription);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是要显示的实际描述字符串.

Andrew和Stephanie Tidwell坦诚地分享了他们在这项业务中的成功故事.这个故事将帮助每个人听到意识到没有人是完美的,即使在第二代业务.这是一个流音频文件.

还有一些问题吗?我可以更新问题.

Com*_*are 44

我的一本书中引用自己:

Android的TextView类具有内置的"椭圆化"文本功能,截断它并在文本长于可用空间时添加省略号.例如,您可以通过android:ellipsize属性使用它.这种方法效果很好,至少对于单行文本而言.Android使用的省略号不是三个句点.相反,它使用实际的省略号字符,其中三个点包含在单个字形中.因此,您使用的任何字体也使用"椭圆化"功能将需要省略号字形.

除此之外,Android会在屏幕上填充字符串,这样在"椭圆化"之前和之后的长度(以字符为单位)是相同的.为了完成这项工作,Android用省略号替换一个字符,并用Unicode字符"ZERO WIDTH NO-BREAK SPACE"(U + FEFF)替换所有其他删除的字符.这意味着省略号后面的"额外"字符不占用屏幕上的任何可见空间,但它们可以是字符串的一部分.

但是,这意味着您用于与android:ellipsize一起使用的TextView小部件的任何自定义字体也必须支持此特殊Unicode字符.并非所有字体都可以,如果您的字体缺少此字符,您将在缩短字符串的屏幕表示中获得工件(例如,流氓X出现在行尾).


Ser*_*ich 6

我已经碰到了当试图使用自定义"MetaPro-Medium.otf"作为字体为同样的问题TextViewandroid:singleLine="true".字符串末尾的方框真的很烦人.

我发现在Android中没有办法解决这个问题,但同时找到了以下解决方法.

  1. 我安装了"FontLab Studio v5.04"
  2. 打开我的字体
  3. 选中我不打算使用的符号之一
  4. 菜单 - >字形 - >重命名字形
  5. 将名称和unicode索引从其原始值更改为"FEFF"(感谢CommonsWare)
  6. 双击所选符号,然后删除此符号的所有行.
  7. 菜单 - >文件 - >生成字体 - >另存为otf类型

结果我得到了更新的字体和问题消失了.