Ответ 1
ок разобрался
<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
так что обтекание в CDATA необходимо и разрывы добавляются внутрь как HTML-теги
Я пытаюсь добавить разрыв строки в TextView.
Я попробовал \n, но это ничего не делает. Вот как я устанавливаю свои тексты.
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
Это моя строка: <string name="sample_string">some test line 1 \n some test line 2</string>
Он должен выглядеть так:
some test line 1
some test line 2
Но это выглядит так: some test line 1 some test line 2
.
Я что-то пропустил?
ок разобрался
<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
так что обтекание в CDATA необходимо и разрывы добавляются внутрь как HTML-теги
\n
работает для меня, например:
<TextView android:text="First line\nNext line"
Android версии 1.6 не распознает \r\n. Вместо этого используйте: System.getProperty( "line.separator" )
String s = "Line 1"
+ System.getProperty ("line.separator")
+ "Line 2"
+ System.getProperty ("line.separator");
Linebreaks (\n) работают только в том случае, если вы помещаете свое значение ресурса строки в кавычки следующим образом:
<string name="sample_string">"some test line 1 \n some test line 2"</string>
Он не будет делать разрывы строк, если вы поместите его без кавычек следующим образом:
<string name="sample_string">some test line 1 \n some test line 2</string>
да, это легко.
Пробовал все вышеперечисленное, сделал некоторые исследования моего собственного, в результате получилось следующее решение для рендеринга символов возврата строки:
string = string.replace("\\\n", System.getProperty("line.separator"));
Используя метод замены, вам нужно отфильтровать строки экранированные строки (например,\\n ')
Только тогда каждый экземпляр строки "\n" escape-символов передается в фактическую строку
В этом примере я использовал базу данных noSQL для сценариев Google Apps (ScriptDb) с форматированными данными JSON.
Приветствия: D
Это сработало для меня
android:text="First \n Second"
Есть два способа обойти это.
Если вы используете свою строку как необработанную строку, вам нужно использовать новую строку
персонаж. Если вы используете его как html, например. путем разбора его с помощью Html.fromString
,
второй вариант лучше.
\n
<string name="sample> This\nis a sample</string>
<br>
или <br />
<string name="sample> This<br>is a sample</string>
Это сработало для меня, может быть, кто-то узнает об этом:
TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
Если вы используете XML для объявления вашего TextView с использованием android:singleLine = "false"
или в Java, используйте txtSubTitle.setSingleLine(false);
Используется Android Studio 0.8.9. Единственный способ, который работал у меня, - использовать \n
.
Не было обертывание с помощью CDATA и <br>
или <br />
.
Я использую следующее:
YOUR_TEXTVIEW.setText("Got some text \n another line");
очень просто: используйте "\n"
String aString1 = "abcd";
String aString2 = "1234";
mSomeTextView.setText(aString1 + "\n" + aString2);
\n соответствует ASCII char 0xA, который является "LF" или линией
\ r соответствует ASCII char 0xD, который является "CR" или возврат каретки
это датируется первыми пишущими машинами, где вы можете выбрать только фид линии (и введите только строку ниже) или строку + возврат каретки (которая также перемещается в начало строки)
на Android/java\n соответствует карете return + line feed, так как вы в противном случае просто переписывали бы ту же строку
Попробуйте перепроверить ваши локализации. Возможно, вы пытаетесь редактировать один файл (локализация), но на самом деле программа использует другой, как в моем случае. Системный язык по умолчанию русский, пока я пытаюсь отредактировать английскую локализацию.
В моем случае, рабочим решением является использование \n в качестве разделителя строк:
<string name="string_one">line one.
\nline two;
\nline three.</string>
Также вы можете добавить "<br/>"
вместо \n.
Это HTML-код с экранированным кодом для < br/ >
И затем вы можете добавить текст в TexView:
articleTextView.setText(Html.fromHtml(textForTextView));
Вы также можете использовать String-Editor для Android Studio, он автоматически генерирует линейные тормоза и прочее подобное...
Поскольку Html.fromHtml
устарел, я просто использовал этот код, чтобы получить String2 в следующей строке.
textView.setText(fromHtml("String1 <br/> String2"));
.
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
Spanned result;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(html);
}
return result;
}
Самый простой способ сделать это - перейти к значениям/строкам (в папке с ресурсами)
Объявите там строку:
<string name="example_string">Line 1\Line2\Line n</string>
И в вашем конкретном xml файле просто вызовите строку, например
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/example_string" />
Я нашел другой метод: Необходимо добавить атрибут android: maxWidth = "40dp" . Конечно, это может не сработать отлично, но это дает разрыв строки.
\n не работал для меня. Я смог решить проблему, изменив xml на text и создав текстовое свойство textview, как показано ниже.
android:text="Line 1
Line 2
Line 3
DoubleSpace"
Надеюсь, это поможет тем, кто сказал, что \n не работает для них.
Я читаю свой текст из файла, поэтому я выбрал немного другой подход, так как добавление \n к файлу привело к появлению \n в тексте.
final TextView textView = (TextView) findViewById(R.id.warm_up_view);
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
while (scanner.hasNextLine()) {
sb.append(scanner.nextLine());
sb.append("\n");
}
textView.setText(sb.toString());
Может быть, вы можете вставить lf в текст, но он не отображается? Убедитесь, что у вас достаточно высоты для контроля. Например:
Правильный:
android:layout_height="wrap_content"
Может быть не прав
android:layout_height="10dp"
textview.setText(text.replace("\r", "\n"));
В моем случае я решил эту проблему, добавив следующее:
android:inputType="textMultiLine"