代码之家  ›  专栏  ›  技术社区  ›  Labeeb Panampullan

android在textview编辑的末尾追加''

  •  1
  • Labeeb Panampullan  · 技术社区  · 14 年前

    我有一个lsit视图,我需要添加一些文本。 在适配器中,我需要附加。。。最后我用了 当我付出

    android:ellipsize="end"
    

    只有两行
    asdnfsdfdsf asdfdfasdf
    sdfsd sdfsdf sdfsd广告。。。

    当我付出

    android:ellipsize="start"
    

    它是:

    …sdfsd sdfsdf sdfsd广告

    <TextView  android:layout_width="wrap_content" android:background="#016A7D"
    
       android:layout_height="80dp" android:textColor="#000000"
    
        android:maxLines="4"          
    
        android:id="@+id/list_report_desciption" 
    
        android:ellipsize="end"
    

    /> 我得到的结果是:

    一个更聪明的星球

    实际上它包含6行以上
    有什么东西我需要设定好让我有3条线

    4 回复  |  直到 14 年前
        1
  •  2
  •   DavGin    14 年前

    根据本报告,文本省略似乎有缺陷: http://code.google.com/p/android/issues/detail?id=10554

    通过设置 android:singleLine

        2
  •  0
  •   Labeeb Panampullan    14 年前

    对我来说什么都不管用:-(
    我刚定好长度。剪切该长度的字符串并在其后附加“…”。

        3
  •  0
  •   bensiu CandorZ    12 年前

    我自己也在寻找一个简单的解决方案,结果我得到了如下结论:

    private String getTextWithMoreIndicator(TextView textView, String text) {
    
        long maxVisibleChars = textView.getPaint().breakText(text, true, textView.getMeasuredWidth(), null);
    
        if(maxVisibleChars < text.length()) {
            text = text.substring(0, (int)maxVisibleChars -3) + "..."; 
        }
    
        return text;
    }
    
        4
  •  0
  •   MiaN KhaLiD    11 年前

    理由 :宽度“a”小于“a”,因此,如果基于某种大小(比如15个字母)截断字符串并通过代码添加“…”。你可能会看到意想不到的结果。

    现在来看解决方案:-

    解决:

    将以下3个属性添加到TextView中,您将获得所需的结果:)

    <TextView
        android:ellipsize="end"
        android:lines="1"
        android:scrollHorizontally="true" />
    

    解决方案2: 另一个解决方法可能是,你可以决定选择文本框(从右向左移动文本的奇特动画)。为此,您需要在TextView xml中使用以下属性:-

    <TextView
        android:id="@+id/my_text_view"
        android:ellipsize="marquee"
        android:lines="1"
        android:scrollHorizontally="true"
        android:marqueeRepeatLimit="marquee_forever" />
    

    然后在代码中,您需要根据TextView的id获取它,并放入以下行:-

    TextView myTextView = (TextView) findViewById(R.id.my_text_view);
    myTextView.setSelected(true);
    

    ####编辑:####

    我刚刚发现,要使我的解决方案在高于2.3.x的android版本中工作,我们需要在TextView xml中添加以下行:-

        android:singleLine="true"
    

    虽然它是一个弃用的属性,但你必须添加这个,否则选框或“…”不会工作。