Освой Java играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Класс TextUtils относится к пакету android.text и содержит несколько полезных и удобных методов для работы с текстом.
Проверить, что строка пуста или null можно с помощью метода isEmpty(), указав в параметре строковую переменную.
String tmp = "cat";
if (!TextUtils.isEmpty(tmp)){
Toast.makeText(this, "Строка не пуста", Toast.LENGTH_LONG).show();
}
С помощью метода commaEllipsize() можно укоротить длинную строку, заменив её на сокращённый вариант. Данный способ следует использовать осторожно и в тех случаях, когда информация не столь важна или есть способ получить полный вариант, например, при переходе на следующую активность с детализацией.
Для сравнения добавим на экран две текстовые метки и посмотрим на результат.
package ru.alexanderklimov.text;
import ...
public class MainActivity extends Activity {
final String cats = "Васька, Мурзик, Барсик, Рыжик, Пыжик, Матроскин, Бублик";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView1 = findViewById(R.id.textView1);
textView1.setText(cats);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
final TextView textView2 = findViewById(R.id.textView2);
updateEllipsizedText(textView2, cats);
}
private void updateEllipsizedText(TextView tv, String text) {
TextPaint textPaint = tv.getPaint();
tv.setText(text);
float avail = tv.getMeasuredWidth();
//String oneMore = "one more";
String oneMore = "и ещё...";
//String more = "%d more";
String more = "и ещё %d др.";
CharSequence ellipsizedText = TextUtils.commaEllipsize(text, textPaint, avail,
oneMore, more);
tv.setText(ellipsizedText);
}
}
В методе onCreate() вызывать укорачивание текста не стоит, так как метод getMeasuredWidth() просто не успеет отработать во время загрузки компонентов на экран. Поэтому код для второй метки перенесён в метод onWindowFocusChanged(). В результате, вы видите, что в первом случае длинный текст растянулся на две строчки, а во втором случае текст динамически укоротился. Если повернуть устройство в альбомную ориентацию, то укорачивания не произойдёт. Также следует учитывать, что слова, предназначенные для замены длинного текста, также имеют свою длину. В комментариях оставлен альтернативный вариант для английского текста.

Другие полезные методы: isDigitsOnly() и др.