web-dev-qa-db-ja.com

Android TextViewで改行を追加するにはどうすればいいですか?

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

私は何かが足りないのですか?

137
dropsOfJupiter

わかりました:

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>

cDATAでラップする必要があり、改行はhtmlタグとして内部に追加されます。

83
dropsOfJupiter

\nは私のために働きます。

<TextView Android:text="First line\nNext line"
200
RonN

Androidバージョン1.6は\ r\nを認識しません。代わりに、System.getProperty( "line.separator")を使用してください。

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");
66
Eric JOYÉ

改行(\ 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>

はい、それはとても簡単です。

57
datayeah

上記すべてを試してみて、私自身の調査を行った結果、改行エスケープ文字をレンダリングするための次の解決策が得られました。

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. 置換方法を使用すると、フィルタリングする必要がありますエスケープ改行(例: '\\ n')

  2. 改行 '\ n'エスケープ文字の各インスタンスは実際の改行にレンダリングされます

この例では、JSON形式のデータを含むGoogle Apps ScriptingのnoSQLデータベース(ScriptDb)を使用しました。

乾杯:D

29
Robert

これは私のために働きました

Android:text="First \n Second"
16
Aniruddha

これには2つの方法があります。あなたの生の文字列としてあなたの文字列を使うなら、あなたは改行文字を使う必要があります。 HTMLとして使用する場合は、 Html.fromStringでそれを解析することによって、2番目の変形はより良いです。

1)改行文字\n

<string name="sample> This\nis a sample</string>

2)HTML改行タグ<br>または<br />

<string name="sample> This<br>is a sample</string>
16
poitroae

これは私のために働きました、多分誰かがこれを役に立ちます。

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
15
Zeljko Ivanovic

Android Studio 0.8.9を使用しました。私にとってうまくいった唯一の方法は\nを使うことです。 CDATAでのラップも<br>または<br />も機能しませんでした。

9

TextViewがAndroid:singleLine = "false"を使用することを宣言するためにXMLを使用しているか、またはJavaで使用している場合は、txtSubTitle.setSingleLine(false);を使用してください。

9
strange quark

とても簡単です: "\ n"を使う

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);

\ nはASCII char 0xAに対応します。これは 'LF'または改行です。

\ rはASCII char 0xDに対応します。これは 'CR'またはキャリッジリターンです。

これは最初のタイプライターからさかのぼります。そこでは、ラインフィードのみを行う(そして1行下にタイプする)か、ラインフィード+キャリッジリターン(これも行頭に移動する)を選択できます。

android/Javaでは、\ nはキャリッジリターン+ラインフィードに対応します。

8
Ronny Webers

私は以下を使います:

YOUR_TEXTVIEW.setText("Got some text \n another line");
8
Carlo Matulessy

ローカライズを再確認してください。可能であれば、1つのファイルを編集(ローカライズ)しようとしていますが、実際には別のファイルを使用してプログラムしています 私の場合と同じ 。デフォルトのシステム言語はロシア語ですが、英語のローカライズを編集しようとしています。

私の場合、実用的な解決策は "\ n"を行区切り文字として使用することです。

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>
6
Dr. Failov

また、\ nの代わりに"&lt;br&#47;&gt;"を追加することもできます。

<br/> HTML用のHTMLエスケープコード

そして、TexViewにテキストを追加することができます。

articleTextView.setText(Html.fromHtml(textForTextView));
4
mobiledev Alex

Android Studioの文字列エディタを使用することもできます。それは自動的にラインブレーキなどを生成します。

3
Tim

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;
    }
2
Shylendra Madda

最も簡単な方法は、(リソースフォルダー内の)値/文字列に移動することです。

そこで文字列を宣言します。

    <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" />
2
Fidan Gill

\ n私のために働いていませんでした。 xmlをtextに変更し、textview textプロパティを以下のように構築することで問題を解決することができました。

Android:text="Line 1
Line 2
Line 3

DoubleSpace"

うまくいけば、これは彼らのために働かなかったと言った人たちを助けます。

1
Josh Greco

ファイルからテキストを読んでいるので、ファイルに\ 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());
1
Rich Vogt

私は他の方法を見つけました: "Android:maxWidth =" 40dp ""属性を追加する必要があります。もちろん、それは完全には機能しないかもしれませんが、それは改行を与えます。

1
Master

たぶんあなたはlfをテキストに入れることができますが、それは表示されませんか?コントロールに十分な高さがあることを確認してください。例えば:

正しい:

Android:layout_height="wrap_content"

間違っているかもしれません:

Android:layout_height="10dp"
0
Jarekczek

私の場合、次を追加してこの問題を解決しました。

Android:inputType="textMultiLine"
0
Elcio Cestari