Ответ 1
Проармически вы можете использовать:
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");
Я хочу ограничить мое текстовое представление максимум 5 строками, поэтому я сделал:
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="5" />
Но когда я пытаюсь настроить его, чтобы добавить "...", когда текст усечен, я добавляю android: ellipsize = "end". Я вижу... но тогда мой TextView имеет только максимальную строку из 2, вместо 5.
Можете ли вы предложить, как я могу сделать текстовое представление максимальной строки 5 и добавить "...", когда он будет усечен?
Спасибо.
Проармически вы можете использовать:
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");
попробуйте этот код...
final TextView tv_yourtext = (TextView)findViewById(R.id.text);
tv_yourtext.setText("A really long text");
ViewTreeObserver vto = tv_yourtext.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = tv_yourtext.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
if(tv_yourtext.getLineCount() > 6){
Log.d("","Line["+tv_yourtext.getLineCount()+"]"+tv_yourtext.getText());
int lineEndIndex = tv_yourtext.getLayout().getLineEnd(5);
String text = tv_yourtext.getText().subSequence(0, lineEndIndex-3)+"...";
tv_yourtext.setText(text);
Log.d("","NewText:"+text);
}
}
});
Вам нужно только добавить эту строку в свой TextView:
android:ellipsize="marquee"
Есть один и тот же вопрос android ellipsize multiline textview Это известная ошибка, довольно старая и еще не исправлена: (
кто-то разместил обходное решение http://code.google.com/p/android-textview-multiline-ellipse/, возможно, это поможет вам (или кому-то еще)
Когда я устанавливаю высоту TextView в постоянное значение (например, 50dp), он отлично работает для меня.