Androidでボタンを動的に追加する方法をステップ解説
この記事では、Androidアプリの実行時にJavaコードからボタンを動的に生成・追加する方法を、実際のコード例とともにわかりやすく解説します。XMLレイアウトにあらかじめボタンを配置するのではなく、プログラム内で新しいButtonインスタンスを作成し、画面に反映させる流れを学びましょう。
手順1:Android Studioで新規プロジェクトを作成する
まずAndroid Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、パッケージ名、保存先など)をすべて入力してプロジェクトを完成させてください。
手順2:activity_main.xmlにレイアウトを記述する
次に、res/layout/activity_main.xml に以下のコードを追加します。ここでは、中央揃え設定されたRelativeLayoutだけを配置したシンプルなレイアウトを用意しています。このRelativeLayoutに対して、後ほどコードからボタンを追加します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:id="@+id/relativeLayout"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
</RelativeLayout>手順3:MainActivity.javaにボタン生成のコードを書く
続いて、src/MainActivity.java に以下のコードを追加します。ポイントは以下の通りです。
- new Button(this) でボタンインスタンスを動的に生成
- setText() でボタンに表示するテキストを設定
- setLayoutParams() でレイアウトサイズを指定
- setOnClickListener() でクリック時の処理(Toast表示)を実装
- relativeLayout.addView(button) で画面にボタンを追加
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
RelativeLayout relativeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
relativeLayout = findViewById(R.id.relativeLayout);
Button button = new Button(this);
button.setText("Dynamically created Button");
button.setLayoutParams(new
RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "This button is created dynamically",
Toast.LENGTH_SHORT).show();
}
});
if (relativeLayout != null){
relativeLayout.addView(button);
}
}
}手順4:AndroidManifest.xmlを確認する
最後に、androidManifest.xml が以下のようになっていることを確認してください。MainActivityがランチャーアクティビティとして登録されていれば、特別な変更は不要です。
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>アプリを実行して動作を確認する
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続している前提で説明します。Android Studioからプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。デバイス選択画面で接続したスマートフォンを選択すると、端末側にアプリが起動し、画面中央に動的に生成されたボタンが表示されます。
ボタンをタップすると、「This button is created dynamically」というメッセージがToastで短時間表示されます。これにより、ボタンがコードから正しく動的に作成され、クリックイベントも正常に動作していることが確認できます。

まとめ
Androidでは、XMLレイアウトに静的に定義するだけでなく、Javaコード内でViewを生成してaddView()で追加することで、UIを柔軟に構築できます。条件に応じてボタンの数や内容を変えたい場合など、動的なUI生成は実用的なテクニックなので、ぜひマスターしておきましょう。
-
【Android】ListViewにフッターを追加する方法をステップごとに解説
このチュートリアルでは、AndroidのListViewにフッター(Footer)を追加する方法を、実際のサンプルコードとともにわかりやすく解説します。リストの末尾に「リストの終わり」などの補足情報を表示したい場合に役立つテクニックです。 ステップ 1:新規プロジェクトを作成する まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成しましょう。 ステップ 2:activity_main.xml にコードを追加する res/layout/activity_main.xml
-
AndroidのPreferenceScreenにボタンを追加する方法をわかりやすく解説
はじめに この記事では、Androidアプリの設定画面(PreferenceScreen)にボタンを追加する方法を、実際のコード例とともにステップごとに解説します。設定画面内のボタンは、通常のPreference要素としてXMLで定義し、Java側でクリックリスナーを設定することで、好きな動作を割り当てることができます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトのセットアップを完了させてください。 ステップ2:レイアウトファイル(acti