【问题标题】:Android: TextView automatically truncate and replace last 3 char of StringAndroid:TextView 自动截断并替换字符串的最后 3 个字符
【发布时间】:2009-11-03 11:26:03
【问题描述】:

如果StringTextView 的宽度长,它会自动换行到下一行。我可以通过使用android:singleLine(已弃用)或设置android:inputType="text" 来避免这种情况。我现在需要的是用“...”替换我的String 的最后三个字符。由于我没有使用等宽字体,因此这将始终根据我的String 中使用的字母而有所不同。所以我想知道在TextView 中获取字符串的最后3 个字符并替换它们的最佳方法是什么。也许Android框架中已经实现了一些东西,因为这一定是一个常见的问题。

【问题讨论】:

    标签: java android textview


    【解决方案1】:

    您应该能够使用文本视图的“ellipsize”属性:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_mytext"
        android:ellipsize="end"
        android:maxLines="1"
    />
    

    您可能还需要对布局应用重力值;我有时会看到没有它们的“自动拉伸”视图。

    【讨论】:

    • 完美。谢谢。我之前尝试过,但是没有用,因为我使用了 android:inputType="text" 而不是 android:singleLine="true" (应该被弃用)。但现在我要坚持使用 android:singleLine="true"。非常感谢。
    • 它仍然没有添加“...”。对我来说,这个问题没有完全回答!这个答案将使“short verylongword”变成“short”而不是“short verylon ...”除此之外,你们建议使用不推荐使用的属性。
    • 效果很好,但是 singleLine 已被弃用,因此您必须使用 maxLines="1" 代替。旁注,椭圆也适用于多行!
    • singleLine 已弃用。使用 maxLines="1"。只是对旧答案的评论
    • MaxLine=1 将截断中间的文本视图。 SingleLine=True 按预期工作。
    【解决方案2】:

    为这个问题找到了一个有趣的解决方法。

    maxLines=1
    ellipsize=end
    scrollHorizontally=true
    

    诀窍是关于水平滚动的最后一条语句....检查一下。它至少适用于 v2.2。

    【讨论】:

    • 有趣...很高兴知道。感谢 Marco 的提醒。
    【解决方案3】:

    以编程方式,您可以使用:

    TextView tx = new TextView(this);
    tx.setTextSize(13);
    tx.setGravity(Gravity.CENTER);
    tx.setTop(90);
    tx.setText("Long text here");
    tx.setTextColor(Color.BLACK);
    tx.setSingleLine(true);
    tx.setEllipsize(TruncateAt.END);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多