Ответ 1
проблема заключается в следующей строке
fullString = fullString.replaceAll( "," & # 160");
удалите его, и он будет работать так, как вам нужно, вам не нужно заменять пространство html-кодом, fromHtml
сделает это за вас
Как помешать слову в TextView
сломаться пополам, когда он не подходит для текущей строки и вместо этого перейдет к следующей строке.
|android goo|
|gle kitkat |
должен быть
|android |
|google |
|kitkat |
В настоящее время TextView
добавляется к RelativeLayout
с помощью этого кода:
TextView tv = new TextView(this);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (16*scale + 0.5f);
tv.setPadding(dpAsPixels, 0, dpAsPixels, 0);
tv.setLayoutParams(layoutParams);
String fullString = "<b>" + user + ":</b> " + text;
fullString = fullString.replaceAll("\n", "<br />");
fullString = fullString.replaceAll(" ", " ");
tv.setText(Html.fromHtml(fullString));
tv.setTextSize(32f);
tv.setTextColor(getResources().getColor(R.color.text));
layout.addView(tv);
проблема заключается в следующей строке
fullString = fullString.replaceAll( "," & # 160");
удалите его, и он будет работать так, как вам нужно, вам не нужно заменять пространство html-кодом, fromHtml
сделает это за вас
Проблема с вашим кодом - это строка:
fullString = fullString.replaceAll(" ", " ");
Таким образом вы заменяете все "нормальные" пробелы на неразложимые пробелы ( 
). Поскольку эти пространства не разбиваются, они предотвращают разрыв строки.
Просто удалите эту строку, и слова больше не сломаются.
Добавить
android:scrollHorizontally="false"
в вашу запись TextView в XML или вызовите
setHorizontallyScrolling(false);
Docs здесь.
В некоторых случаях мы можем использовать Webview и оправдывать текстовую помощь html/css, а затем устанавливать текст.