テキストを表示するアプリです。テキストはTextViewを使います。
2024.1.1
TextView
例として TestTextView という名前でプロジェクトを作成します。最終的にこのような感じにします。
プロジェクトの作り方の説明は↓を見てください
MainActivity.java
プロジェクトを作ると2つのファイルができています
- MainActivity.java
- activity_main.xml
ここにコードを記述します
MainActivity.java には
1 |
setContentView(R.layout.activity_main); |
がありますのでその後に以下の2行を追加します。
1 2 3 4 |
TextView textView = findViewById(R.id.text_view); // テキストを設定して表示 textView.setText("Test TextView"); |
findViewById の代わりに View Binding を使うこともできます
テキストやボタンといった部品を配置するためには
setContentView を使います
setContentView:
Screenにテキスト、ボタン、画像を表示させる仕組みでSetContentViewは最終的にViewをまとめるところです。
それぞれTextViewなどのViewを何種類かあるLayoutに設定し、それをSetContentViewに入れます。
ファイルでは(LinearLayoutの例)
- レイアウトファイルのidを指定するやり方と
- setContentView(int layoutResID)
- コードで記述する方法があります
- setContentView(View view, ViewGroup.LayoutParams params)
- setContentView(View, android.view.ViewGroup.LayoutParams)
今回はレイアウトファイルを使います
layoutResID にはレイアウトファイルの名前を設定します
setContentView(R.layout.activity_main);
TextView のインスタンスを作成しますが、そこで
レイアウトファイル(activity_main.xml)のidを指定
TextView textView = findViewById(R.id.text_view);
そしてそのインスタンスにテキストを設定します
(文字列の直書きも可能ですが、resourceに記述して呼び出すことを推奨されています)
textView.setText(R.string.text);
MainActivity.java(package 名はそれぞれに自分のpackage名に合わせてください)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//package com.example.testtextview; //package 名はそれぞれに自分のpackage名に合わせてください import android.os.Bundle; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); // text_view: activity_main.xml の TextView の id TextView textView = findViewById(R.id.text_view); // テキストを設定 // R.string.textは"Test TextView"のこと textView.setText(R.string.text); } } |
activity_main.xml
次はレイアウトファイルを記述します
初期設定では Hellow World の文字を表示する記述がなされています。デフォルトのレイアウトは ConstraintLayout です。込み入ったレイアウトも軽く作れるのですが、他にもLinearLayoutやRelativeLayout等幾つか用途に応じたレイアウトがあります。
ConstraintLayout
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout .... /> <TextView ... /> </androidx.constraintlayout.widget.ConstraintLayout> |
Layoutで表示したいView、ここではTextViewを囲んで作成します
TextViewの記述では、
MainActivity で設定した id を指定します
android:id=”@+id/text_view”
高さと幅を wrap_content で設定します
これを指定すると必要な高さ、幅を自動で取ってくれます
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> |
リソースの設定
文字列の設定で、リテラルは推奨されないのでリソースに設定します。
strings.xml(app_name は自分のapp_nameに合わせてください)
1 2 3 4 |
<resources> <string name="app_name">TestTextView</string> <string name="text">Test TextView</string> </resources> |
これだけだと、実際には文字が小さすぎるで修正してみます。
- 文字サイズを textSize で大きめにしました
- android:textSize=”50sp”
- 文字色を青に設定
- android:textColor=”#0000aa”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="50sp" android:textColor="#0000aa" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> |
少しは見栄えがよくなったでしょうか
次は、
setContentView のコード記述
について
References:
TextView | Android Developer
setContentView | Android Developer