Ответ 1
Это обычная проблема. Попробуйте использовать следующее:
android:scrollHorizontally="true"
android:ellipsize="end"
android:maxLines="1"
.............. scrollHorizontally - это "специальный соус", который заставляет его работать.
У меня есть следующий макет, который не работает:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:id="@+id/experienceLayout"
android:background="#ffffff"
android:layout_height="match_parent"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"
android:paddingTop="6dp">
<TextView
android:layout_weight="1"
android:id="@+id/experienceLabel"
android:text="Experience"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_width="wrap_content"
android:textStyle="bold">
</TextView>
<TextView
android:id="@+id/experienceTextView"
android:text="TextView"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_width="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:singleLine="true"
android:fadeScrollbars="false">
</TextView>
</LinearLayout>
Это обычная проблема. Попробуйте использовать следующее:
android:scrollHorizontally="true"
android:ellipsize="end"
android:maxLines="1"
.............. scrollHorizontally - это "специальный соус", который заставляет его работать.
Это также сделает одну строку с эллипсисом
android:singleLine="true"
Использовать этот
android:ellipsize="end"
android:singleLine="true"
Не используйте это, не зная полностью, что приходит на выход
android:ellipsize="end"
android:maxLines="1"
Когда вы используете maxlines = 1
это будет когда-то урезать большинство символов.
Способ, которым он работал у меня на нескольких устройствах /API, был программно подобен этому (где tv - ваш TextView):
if (tv.getLineCount() > 1) {
int lineEndIndex = tv.getLayout().getLineEnd(0);
String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
tv.setText(text);
}
Таким образом, все ответы, приведенные выше, удовлетворяют требованию, чтобы отображалась только 1 строка и затем многоточие. Однако если вы хотите, чтобы многоточие появлялось после определенных строк текста, вам следует использовать следующее:
android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"
При этом многоточие появится только через 2 строки. Примечание. Важно, чтобы singleLine имел значение false.
Это помогло мне:
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
Убедитесь, что TextView
width
установлено на Match_Parent
https://github.com/chrisjenx/Calligraphy/issues/43#issuecomment-523701518