[Android] TextViewをConstraintLayoutでレイアウトファイルを使わずに記述する

TextView を動的にフォントを大きくしたり、位置を変えるなどはコードで記述することで可能です。レイアウトファイルと併用することもできますが全てコードで書く場合はどうするか、ConstraintLayoutは少々面倒でした。

Android Studio
2021.1.1




TextView

TextViewをJavaコードでprogrammaticallyに記述することのメリットは、ダイナミックに変更できる点です。レイアウトXMLファイルは静的なので、一度作成すると変更できません。

一方デメリットとしては、コード量が増大しがちでレイアウトファイルのように感覚的に作ることもできません。ただ、レイアウトファイルで作成した後で部分的にコードで変更することは可能です。
 

 

コード化のポイント

 
テキストやボタンといった部品を配置するためには setContentView を使いますが、今回はレイアウトXMLファイルである activity_main.xml を使わないやり方です。
 
setContentView:
その名の通り、スクリーン画面にViewを設定するメソッドです。
設定されるViewはLayout形式でまとめられたViewグループになります。
 
1x1.trans - [Android]  TextViewをConstraintLayoutでレイアウトファイルを使わずに記述する


 
setContentViewのメソッドは引数の取り方でいくつかあります
  • setContentView(int layoutResID)
    • レイアウトXMLファイルのIDを指定
  • setContentView(View view)
    • 簡略形です。今回はこれを使います
  • setContentView(View view, ViewGroup.LayoutParams params)

Ref: Android Developer
 
例えば、デフォルトのレイアウトファイルではこのようになっていますのでそれぞれコードに置き換えてみます。

activity_main.xml


 

ConstraintLayoutのインスタンスを生成して setContentView に設定。


 
TextView のインスタンスを作成


 
表示するテキストを設定して


 
TextViewの位置のConstraintはConstraintSetを使います。それを使うためTextViewのIDを設定する必要があるのでIDを作らないといけません


 
ConstraintSetはクローンを作って制約を設定してapplyします。


 

サンプルコード

 
プロジェクトを作成しますが、プロジェクトの作り方の説明は「簡単な Button アプリを作る」を見てください
 
デフォルトでファイルが出来上がります。
MainActivity.java
これに以下のように記述していきます。
 
MainActivity.java


 
こんな感じで出来上がりました。
 
1x1.trans - [Android]  TextViewをConstraintLayoutでレイアウトファイルを使わずに記述する


 

サンプルコード(修正)

 
テキストフォントが小さいので少し手を加えて見た目をよくしましょう。
 
TextViewの設定に以下を追加します。


 
多少マシになりましたでしょうか。
 
1x1.trans - [Android]  TextViewをConstraintLayoutでレイアウトファイルを使わずに記述する


 
 
関連ページ:

 
Reference:
Android Developer

シェアする

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

フォローする