[Android & Kotlin] TextViewの文字表示

Kotlinで文字列を表示させてみましょう。TexViewとViewBindingを使います。

1x1.trans - [Android & Kotlin] TextViewの文字表示


Android Studio
2021.1.1

 




TextView

 
JavaでのTextを表示させるTextViewは下のように作成しましたが、そのコードをKotlinに変えるとどうなるか試してみます。
 

textview a00 100x100 - [Android & Kotlin] TextViewの文字表示
テキストを表示するアプリです。テキストはTextViewを使います。

 

 

Kotlinプロジェクトの作成

 
プロジェクト作成はLanguageの切り替えだけでKotlinとJavaの作り分けができます。
 
プロジェクトを作成するときに、プロジェクト名を設定するステップで
 
1x1.trans - [Android & Kotlin] TextViewの文字表示


 
Languageの設定をKotlinにします。
 
これだけでプロジェクトがKotlin仕様で作成れます。
 

プロジェクト構成ファイル

 
プロジェクトを作ると幾つかのファイルが既にできています。

1x1.trans - [Android & Kotlin] TextViewの文字表示

  1. MainActivity.kt
  2. activity_main.xml
  3. AndroidManifest.xml
    • マニフェストにはアプリの各コンポーネントが定義されていて、セキュリティ上ユーザーに許可を得るための記述などがされています。
  4. build.gradle
    • 同じ名前のファイルが2つあり、プロジェクト用(Project: xxx)とモジュール用(Module: xxx.app)で、もっぱらモジュール用を使用します。ターゲットのAPIレベルやライブラリーの情報が設定されます。
 

MainActivity.kt

 
アプリのエントリポイントで、Kotlin の主なコーディングは MainActivity.ktにします。

アプリをビルドして実行するとこの Activity のインスタンスが起動し、そのレイアウトが読み込まれます。

1x1.trans - [Android & Kotlin] TextViewの文字表示

Empty Activityを選んだので、ある程度の基本的なコードは既に入っています。

 

activity_main.xml

 
Activity のユーザー インターフェース(UI)のレイアウトを定義する XML ファイルで、ここにコードを記述あるいは「Design」タグからレイアウトエディタでも作成が可能です。

やり方としては、

  • 「Design」を使って画面上にUIパーツを配置する
  • 「Code」で全てコードで記述

「Design」ではレイアウトの配置全体をデザイン的に決めていくには便利です。

右上の3つ並んだアイコンで「Code」「Split」「Design」の切り替えができます。

1x1.trans - [Android & Kotlin] TextViewの文字表示

 
「Code」は並んだアイコンの左端です。
微調整も含めた細かな設定はコーディングがいいでしょう、またネットにある開発情報の多くがコードです。

1x1.trans - [Android & Kotlin] TextViewの文字表示

actvity_main.xml のコードです。

 

ViewBinding

 
文字列を表示するために、MainActivity.kt の onCreate() 以下に TextView を設定します。
ViewBindingを使ってレイアウトファイルのIDとコードを結びつけるのですが、これは過去のやり方がまだネット上に残っています。(これはよくあります。仕様変更が早いので)

ActivityからXMLレイアウトファイルのTextViewを呼び出すには元々 findViewById を使っていました。
findViewById: 

activity_main.xml


MainActivity.kt


これには問題点がありました

  • コードの間違いがビルドしないと分からない
  • null safeではない、nullableとして気を付けるしかない
  • etc.

kotlinx synthetic:

Kotlinではsyntheticを使い簡略化できましたが…


こちらもどこからでも参照されてしまうとか、Kotlinでしか使えないなどで簡略化できるというメリットだけだったので、Googleとしては非推奨としました。代わりにViewBindingが推奨されています。

 
ViewBinding:
 
ViewBindingの設定はまず初めに
以下のように buildFeatures{ viewBinding true } を追加します。

build.gradle (Module: …)


次に、activity_main.xml ファイル内にある
android:text=”Hello World!”
を削除し代わりに
android:id=”@+id/textview”
を追加します。


MainActivity.kt
以下のように追加修正をします。


ここまででほぼ完成ですが、”Test TextView”の箇所が黄色くワーニングになています。

文字列の設定で、直接記述するリテラルは推奨されないのでリソースに設定します。
res¥values¥ 以下の strings.xml ファイルに書き込みます。

strings.xml


(app_name はアプリの名前ですからそのまま)

textview ではgetString()でIDをこのように呼び出します


記述が簡略化されたとは思えませんが、findViewByIdからのいくつかの問題は解決されています。

 

サンプルコード

 
まとめてみます。
 
MainActivity.kt


 
レイアウトです
activity_main.xml


 
リソースです
strings.xml


 
build.gradle (Module: …)
また記述後には Sunc が必要です(エディタ上部に表示が出ます)


実行します。
 
1x1.trans - [Android & Kotlin] TextViewの文字表示


 
完成ですが、文字が読みづらいので、TextViewにtestSizeとtextColorを設定してみます。
 


 
1x1.trans - [Android & Kotlin] TextViewの文字表示

 
 
References:
TextView | Android Developers
Kotlin and Android | Android Developers
Kotlin Programming Language
Kotlin Android Extensions の未来

シェアする

  • このエントリーをはてなブックマークに追加

フォローする