Intereting Posts
Имитация гибели активности в Android Преобразование в формат Dalvik завершилось ошибкой с ошибкой 1 со страшным сообщением в представлении «Консоль» Предварительный просмотр камеры Android – как «заморозить» камеру? CCAVENUE Платежный шлюз интеграции с Android-приложением Внешнее распределение слишком велико для этого процесса в Android Как читать / писать логическое значение при реализации интерфейса Parcelable? Как работает андроид: taskaffinity? Как я могу определить, имеет ли Android APK отладку значение true или false в манифесте без его установки? Не удается разрешить Manifest.permission.ACCESS_FINE_LOCATION Прокси-сервер Android путает ресурсы документации Подключить Eclipse к эмулятору Android на другой машине Таблица заголовков Android TableLayout HttpURLConnection для отправки изображений, аудио и видео файлов с параметром может (String или Json String) Android Создать новый ParseUser с помощью Google+ AccessToken возвращает InvalidSession? Android: Как изменить формат даты DatePicker с MM / dd / yyyy на dd / MM / yyyy?

Предотвращение разрыва строки в TextView

В моем приложении Android у меня есть текстовое представление, которое отображает текст, содержащий специальные символы. TextView каким-то образом автоматически разбивает строки на символы '/' и '-'.

Например, строка «aaaaaaa / bbb-ccccc / ddd» отображается как

aaaaaaa/ bbb- ccccc/ ddd 

Тем не менее, я хотел бы отображать его без каких-либо строк, кроме тех, которые находятся на границах представления, т. Е. Вот так:

 aaaaaaa/bb bb-ccccc/d dd 

Есть ли способ деактивировать автоматические разрывы или избежать этих символов? Я уже пробовал убегать с \ uFEFF без успеха.

Solutions Collecting From Web of "Предотвращение разрыва строки в TextView"

Сохраняйте атрибут textview

 android:layout_width="wrap_content" android:layout_height="wrap_content" 

Определите свою строку в файле string.xml

 <string name="Username"> aaaaaaa\/bb\nbb\-ccccc\/d\ndd</string> 

Возможно, это решение: https://stackoverflow.com/a/22337074/3472905

Я добавил косую черту:

 public class WordBreakTransformationMethod extends ReplacementTransformationMethod { private static WordBreakTransformationMethod instance; private WordBreakTransformationMethod() {} public static WordBreakTransformationMethod getInstance() { if (instance == null) { instance = new WordBreakTransformationMethod(); } return instance; } private static char[] dash = new char[]{'-', '\u2011'}; private static char[] space = new char[]{' ', '\u00A0'}; private static char[] slash = new char[]{'/', '\u2215'}; private static char[] original = new char[]{dash[0], space[0], slash[0]}; private static char[] replacement = new char[]{dash[1], space[1], slash[1]}; @Override protected char[] getOriginal() { return original; } @Override protected char[] getReplacement() { return replacement; } } 

Вы, вероятно, можете использовать атрибут Lines или его метод counter-part setLines (int)

Там нет готового решения и нет такой вещи, как «обернуть текст буквами в TextView», единственный способ сделать это в хорошем смысле – это расширить TextView и изменить PaintText Paint (текст строки, логическая мерка вперед, float maxWidth, float [] measuredWidth) функция.

Кроме того, вы можете вычислить размер TextView в пикселях, рассчитать ширину одной буквы в пикселях, затем найти количество букв (X), которые будут вписываться в одну строку, а затем вставить строку после каждой буквы X

Я проверил следующий код. Вы можете даже преобразовать его в функцию:

  String specialString = "a/b/-c/dd"; String[] specialArray = specialString.split("/"); String str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 47); } str = str + specialArray[specialArray.length - 1]; specialArray = str.split("-"); str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 45); } str = str + specialArray[specialArray.length - 1]; textView.setText(str); 

Теперь текст не исчезает

Вы можете попробовать это: "aaaaaaa" + "/" + "bbb-ccccc" + "/" + "ddd"

Вы можете рассчитать размер текста таким образом:

 String text = "This is my text"; Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(14.0f); Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); bounds.width() // width in pixels bounds.height() // height in pixels 

На основе этих значений вы можете разбить текст на части и вставить символы новой строки.