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


253

TextViewin を定義するときにxml、それに新しい行を追加するにはどうすればよいですか?\n動作しないようです。

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
あなたのコードは私にとってはうまくいきます。マルチテキストの代わりに何が得られますか?
molnarm

2
ビジュアルエディターではテキストとして表示されます\ n
Pentium10

回答:


293

ビジュアルエディターを信頼しないでください。あなたのコードはエミューで動作します。


まあ、私の場合、ビジュアルエディターは真実を語っていました。バックスラッシュを表示するために別のバックスラッシュを追加していました。正しい方法は、XMLファイル内にテキストを配置することでした。
dp2050

79

試してください:

android:lines="2"

\n うまくいくはずです。


1
テキストビューが2行より長くなる可能性があります。そのコントロール。それはほとんど何でもかまいません。
dropsOfJupiter 2011年


38

これはあなたのHTM.fromHtml(subTitle)呼び出しと関係があると思います: "\ n"はHTMLにbupkisを意味しません。<br/>「\ n」の代わりに試してください。


25
@androidevAlexそれは<br/>ではなく</br>だからです
Ilya Kogan

21

まず、これをテキストビューに配置します。

android:maxLines="10"

次に\n、textviewのテキストで使用します。

maxLinesは、TextViewの高さを最大でこの数行にします。別の番号を選択できます:)


19

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

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. replaceメソッドを使用して、エスケープされた改行をフィルタリングする必要があります(例'\\\n'

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

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

乾杯:D


1
これは私にとってうまくいきました:replace( "\\ n"、System.getProperty( "line.separator"));
スロット2015

むしろ、string = string.replaceAll( "\\\ n"、System.getProperty( "line.separator"));
user846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

これでうまくいくと思います。


8

Android TVを使用している私の2セント。

\n読みながら、XML文字列を追加します。

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

私は同じ問題を解決し、xmlの属性の下に置きます

android:lines="2" android:maxLines="4" android:singleLine="false"

作業。Html.fromHtml("text1 <br> text2").toString()また働く。


これはまだ関係があります、ありがとう!maxLinesはありましたが、singleLine = falseがありませんでした。
blast_hardcheese 2013年

これは私から働いた唯一の解決策です。ありがとう!
Silas


7

これは私の問題を解決しました。

stringVar.replaceAll("\\\\n", "\\\n");


5

これを行う1つの方法は、Htmlタグを使用することです。

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

デバッグすると、文字列が実際に"\ \r\ \n"orである"\ \n"、つまりエスケープされていることがわかります。したがって、その文字列をマッサージすると、余分なを取り除くために\、解決策が得られます。これは、特にデータベースから読み取る場合に当てはまります。



4

維持する必要があります

1。android:maxLines="no of lines"

2. \n次の行を取得するために使用する


4

私にとっての解決策は、次の行をレイアウトに追加することでした:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

また、\ nはビジュアルエディターの新しい行として表示されます。それが役に立てば幸い!


1
それが質問に関連しているかどうかはわかりません:)
スレイマン'20年

同じ問題がありましたが、新しい行の代わりに文字列「\ n」だけが表示されました。この上に行を追加すると、もう当てはまりません。新しい行が表示されました
Rob

1
多分それはあなたがOP を使用tools:textしていてandroid:text嫌いだったからかもしれませんが、とにかく邪魔して申し訳ありません:)
Suleyman

私はそれをより明確にすべきだったと思います、あなたが今やったあなたのコメントのおかげで:)私はandroid:textそれを使用しますそれはアクセプターの回答が示唆するように、それはビジュアルエディターのバグだと思いますが、それを見ることができるのはより快適です:)
ロブ

ええ、私は今理解しています、あなたはそうです、それはより快適です:)おかげで
スレイマン

4

また、&lt;br&gt;代わりに追加できます \n.

次に、テキストをTexViewに追加できます。

articleTextView.setText(Html.fromHtml(textForTextView));

XMLではできません。コンパイルエラーが発生します- android:text<または>文字を含めることはできません。
Timmmm

3

\nファイルに入れる必要がありますstring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

2
 android:text="Previous Line &#10; Next Line" 

これは動作します。


いいえ、ありません。
shazbot 2018

<TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:singleLine = "false" android:text = "Prev Line&#10; New LIne" />動作を確認するには、エミュレータで実行する必要があります。ありがとう
Viral Parmar

2

ちょうど試して:

Textview_name.settext("something \n  new line "):

Javaファイル。


3
質問に対する適切な回答を提供してください。そうでない場合はコメントを使用してください
DjSh

1

RuDrA05の答えは良いです。EclipseでXMLを編集すると機能しませんが、notepad ++でXMLを編集すると機能します。

eclipseまたはnotepad ++で保存されたtxtファイルを読んだ場合も同じことが起こります

多分エンコーディングに関連しています。


1

これは正常に動作します。アプリを確認してください。

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

補足:テキストを大文字にする

android:inputType="textCapCharacters"

または同様の\n動作を停止するようです。


1

あなたが使用していることを確認your_package.R していませんandroid.R



0

TextViewの新しい行については、機能するテキストの途中に\ nを追加するだけです。


しかし、回答は質問リンクに関連しています。「あなた」の質問ではありません...
Nikhil Borad

omg ..申し訳ありませんが混乱しています。回答を編集してください。投票を正に変更します。
Ranjith Kumar

1
ちょっと最初にあなたの答えを編集します。それ以外の場合、投票を変更することはできません。
Ranjith Kumar

0

TextViewが任意のレイアウト(LinearLayoutなど)にある場合android:orientation="vertical"は、レイアウトと同様に方向属性を垂直に 変更するか、TextView属性android:singleLine="true"を変更して新しい行を作成します。


0

プログラム的に:myTV.setText( "My Text" + "\ n" + myString);


0

stings.xmlに文字列を作成します

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

次に、コードで文字列を参照します

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.