【问题标题】:Android TextView ellipsizeAndroid TextView 椭圆大小
【发布时间】:2014-01-22 06:55:38
【问题描述】:

我正在使用 Android TextView 来显示 CATALOG 的名称。

我为TextView 外部布局添加了特定宽度(150dp)。

我想在文本更多长度时显示“...”。

 <RelativeLayout
            android:id="@+id/textview_layout"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"        
            android:orientation="vertical" >

            <TextView
                android:id="@+id/catalog_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"                 
                android:layout_centerInParent="true"
                android:gravity="center_vertical"
                android:textColor="@color/blue"
                android:textSize="20dp"
                android:singleLine="true"                   
                android:ellipsize="end"
                 />
       </RelativeLayout>

目录名称:家具和书籍

我的结果显示:

家具和...

但我的预期结果是

家具和……(或)家具……

当目录名称中没有单词空格时,我想显示“...”。

【问题讨论】:

  • 你试过android:maxLength
  • 我正在使用 android:singleLine="true"。不需要 maxLength 属性。
  • 这在某些 Android 手机中不起作用,但适用于 HTC 和其他 Android 设备。这是我的经验。
  • 它最终会像家具一样...因为没有更多可用空间了!您要么必须减小文本大小,要么必须经历相同的情况。
  • 实际上我并没有使用静态宽度作为 TextView 布局的动态宽度(例如 screenSize/3),只是我提到了 150dp 以供参考。

标签: android textview android-textattributes


【解决方案1】:

请检查是否有效

<RelativeLayout
    android:id="@+id/textview_layout"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/catalog_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:text="Furniture and Books"
        android:textColor="@android:color/holo_blue_dark"
        android:textScaleX="1.1"
        android:textSize="20dp" />

</RelativeLayout>

【讨论】:

    【解决方案2】:

    如果真的有必要,你可以在 java 代码中试试这个。

    String str = "Furniture and Books";
    str  =  str.substring(0,8)+"...";
    text_view.setText(str);
    

    【讨论】:

      【解决方案3】:

      尝试为您的文本视图设置 EMS,例如:

      <TextView
          android:id="@+id/catalog_name"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"                 
          android:layout_centerInParent="true"
          android:gravity="center_vertical"
          android:textColor="@color/blue"
          android:textSize="20sp" 
          android:singleLine="true"                   
          android:ellipsize="end"
          android:maxEms="4"
          />
      

      顺便说一句,在字体中使用“sp”是一种很好的做法......任何方式

      其中 EMS 是您的 textview 应包含的字符大小,实际上,4 EMS 使文本视图包含 8 个字符(您可以使用您的设备对其进行测试),如果您想根据字符数,你可以使用

      android:ems="4"
      

      改为

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 2013-02-19
        • 2012-08-01
        • 2014-08-12
        • 2016-02-25
        • 1970-01-01
        相关资源
        最近更新 更多