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");
改行(\ 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'エスケープ文字の各インスタンスは実際の改行にレンダリングされます
この例では、JSON形式のデータを含むGoogle Apps ScriptingのnoSQLデータベース(ScriptDb)を使用しました。
乾杯:D
これは私のために働きました
Android:text="First \n Second"
これには2つの方法があります。あなたの生の文字列としてあなたの文字列を使うなら、あなたは改行文字を使う必要があります。 HTMLとして使用する場合は、 Html.fromString
でそれを解析することによって、2番目の変形はより良いです。
\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");
Android Studio 0.8.9を使用しました。私にとってうまくいった唯一の方法は\n
を使うことです。 CDATAでのラップも<br>
または<br />
も機能しませんでした。
TextViewがAndroid:singleLine = "false"
を使用することを宣言するためにXMLを使用しているか、またはJavaで使用している場合は、txtSubTitle.setSingleLine(false);
を使用してください。
とても簡単です: "\ 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はキャリッジリターン+ラインフィードに対応します。
私は以下を使います:
YOUR_TEXTVIEW.setText("Got some text \n another line");
ローカライズを再確認してください。可能であれば、1つのファイルを編集(ローカライズ)しようとしていますが、実際には別のファイルを使用してプログラムしています 私の場合と同じ 。デフォルトのシステム言語はロシア語ですが、英語のローカライズを編集しようとしています。
私の場合、実用的な解決策は "\ n"を行区切り文字として使用することです。
<string name="string_one">line one.
\nline two;
\nline three.</string>
また、\ nの代わりに"<br/>"
を追加することもできます。
<br/> HTML用のHTMLエスケープコード
そして、TexViewにテキストを追加することができます。
articleTextView.setText(Html.fromHtml(textForTextView));
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" />
\ n私のために働いていませんでした。 xmlをtextに変更し、textview textプロパティを以下のように構築することで問題を解決することができました。
Android:text="Line 1
Line 2
Line 3
DoubleSpace"
うまくいけば、これは彼らのために働かなかったと言った人たちを助けます。
ファイルからテキストを読んでいるので、ファイルに\ 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());
私は他の方法を見つけました: "Android:maxWidth =" 40dp ""属性を追加する必要があります。もちろん、それは完全には機能しないかもしれませんが、それは改行を与えます。
たぶんあなたはlfをテキストに入れることができますが、それは表示されませんか?コントロールに十分な高さがあることを確認してください。例えば:
正しい:
Android:layout_height="wrap_content"
間違っているかもしれません:
Android:layout_height="10dp"
私の場合、次を追加してこの問題を解決しました。
Android:inputType="textMultiLine"