Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

TextViewに複数行テキストを表示させる方法 in AndroidStudio

 どうも!LSSです!

 

 今回は、TextViewに複数行に渡る文章を表示させる方法について書きます!

 

 

 

 

AndroidStudioで、普通にそれをやってみようとすると…

f:id:little_strange:20191202210231p:plain

↑新規作成したばかりのプロジェクト(emptyActivityを選択した場合)で、Hello World!って表示されてるTextViewを選択した状態の図です。

 

 中身の文字の既存値「Hello World!」を、別の文字に変えたい場合、右のAttributesにあるtextのところを打ち換えればOK!…というのは、AndroidStudioでのアプリ開発を始めたばかりのだいぶ初期の段階で覚えるところかと思います。
(TextViewだけじゃなく、Buttonとかでもそうですしね)

 

 さて、そこで標題の件。

 TextViewなんだから、もちろん複数行に渡る文章を表示させたい場合も出てきますが、入力欄は1行しかありません。
 MicrosoftOfficeみたいにALTキー押しながら、とかCtrlキー押しながら、のEnterキーでも改行してくれずに困った経験、AndroidStudio触った皆さんあるんじゃないでしょうか?

 

 

 

以前にやった対策(間違った方法です^^;)

 ここでこんな事をしようとする人はどれだけいるでしょうかw

 

    override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

tv0.text="""
あいうえお
かきくけこ
さしすせそ
"""
}

 

xmlでの設定を諦め、Kotlinの方で"""を使い、改行入りのテキストを代入する方法w
"""で挟んだものは、そのままの形で文字列として扱われます。)

 

f:id:little_strange:20191202215527p:plain

↑この通り、ちゃんと改行された文章が表示されます。

 

 ほんッとーに他に方法がないのであれば、Kotlinのコードのインデントを無視する事にはなるけど、それを気にしなければ書きやすい方法でもありますね^^

…って、いやいやいやいや、まさか、単純にTextViewに複数行の文章を表示させたいだけなのに、xmlで出来ないはずがない!

 

と、今 書いたコードは削除しますw

 

 

「¥nを入れたらいいよ」っていう話

を見かけたので、「お、なるほど!」と、試してみます。

 まず、AndroidStudioが推奨する、「文字列はリソースstrings.xmlを使ってね」に従った方法でやってみます。

 

f:id:little_strange:20191202220341p:plain

Attributestextんとこの右にある「これ」をクリックします!

 

f:id:little_strange:20191202220559p:plain

 こんなダイアログが出てくるので、右上の「Add new resource」の横の▼をクリック。

 

f:id:little_strange:20191202220735p:plain

 ちっちゃく「New string Value...」ってのが出てくるので、それもクリックします。

 

f:id:little_strange:20191202220957p:plain

 すると更にこんなダイアログが出てきます。

Resource name」には任意の名前を、「Resource value」のところに表示したい文字列を入力します。

 

f:id:little_strange:20191202221318p:plain

 試しにこんな風にしてみました!
 これで、

あいうえお
かきくけこ

って出てきたらいいんですが…。

 とりあえずOKボタンをクリックします!

 

 

f:id:little_strange:20191202221658p:plain

…ん?プレビュー画面で改行されず\nになっちゃってる…。

 プレビューだからでしょうか? 実行したらちゃんと表示してくれる? ねぇ?

 

 

f:id:little_strange:20191202222537p:plain

 

 やっぱダメかwwwwww

 

 

先ほど設定した内容はstrings.xmlに記載されてます。

 いわば、さっきのダイアログはstrings.xmlへの追記を代行してくれるツールなので、実際strings.xmlにどのように書かれているのか確認してみました。

 

f:id:little_strange:20191202222946p:plain

 strings.xmlは、app>res>valueの中にあります。

  早速ダブルクリックして開いてみます!

 

f:id:little_strange:20191202223315p:plain

 うわおw

 ¥が2つ連なって記録されていますね。

 つまり、ダイアログで入力した時の¥記号を、AndroidStudio氏が
「ああ、を表示させたいんやな」
と変に気をまわして、
「そのままやと改行になってまうで!
 ¥¥にしてエスケープシーケンスかけといたるわな」
と、改変してくれてたようです。(¥は\として表示されますが)

 

 いやいや、改行したいんですよ!と、このstrings.xml上で¥をひとつ削っておきます。

 

f:id:little_strange:20191202223959p:plain

 

 

さて、この状態でプレビューは?

f:id:little_strange:20191202224141p:plain

 おお!ちゃんと改行されて表示されてます!!^^

 もちろん、実行しても、

f:id:little_strange:20191202224424p:plain

 この通り、ちゃんと改行表示されてます^^

 

 

 

結論!

 TextViewに複数行の文章を表示させたい場合は、strings.xml内に、

 

<resources>
<string name="app_name">20191202TextViewMultiLine</string>
<string name="aiueo">あいうえお\nかきくけこ</string>
</resources>

のように、改行させたい個所に¥nを挟んで書いて、TextViewのtextにそのリソースを設定すればOK!!

(余談ですが、strings.xmlを使わずにAttributesのtextに直接¥nを入れても改行されます。)

 

 

 

てなとこで、今回はここまで!

 次回もまた、よろしくお願いします^^