Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】ボタンを削除・非表示にする方法をわかりやすく解説

はじめに

この記事では、Androidアプリでボタンを画面から削除する、または非表示(不可視)にする方法を、実際のサンプルコードとともに解説します。ボタンの表示・非表示を切り替えることは、UIの動的な制御において非常によく使われるテクニックです。

Androidでは setVisibility() メソッドを使用することで、ボタンを簡単に非表示にしたり、再表示したりできます。それでは、具体的な手順を見ていきましょう。

手順1:新しいプロジェクトを作成する

Android Studioを起動し、メニューから「File」→「New Project」を選択して、必要な情報を入力して新しいプロジェクトを作成します。

手順2:レイアウトファイル(activity_main.xml)にコードを追加する

res/layout/activity_main.xml に以下のコードを追加します。ここでは、EditText 1つと Button 2つを縦方向に並べたシンプルなレイアウトを定義しています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText android:id="@+id/speed" android:maxLines="1"
        android:layout_marginTop="2dip" android:layout_width="wrap_content"
        android:ems="25" android:layout_height="wrap_content"
        android:autoText="true" android:scrollHorizontally="true" />
    <Button android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="button1" />
    <Button android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="button2" />
</LinearLayout>

手順3:MainActivity.java にコードを追加する

src/MainActivity.java に以下のコードを追加します。このコードでは、button1 がタップされると button1 を非表示にして button2 を表示し、逆に button2 がタップされると button2 を非表示にして button1 を表示する、という切り替え処理を実装しています。

package com.example.sample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
    OnClickListener listener1=null;
    OnClickListener listener2=null;
    Button button1;
    Button button2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listener1=new OnClickListener() {
            public void onClick(View v) {
                setTitle("button1");
                button1.setVisibility(View.INVISIBLE);
                button2.setVisibility(View.VISIBLE);
            }
        };
        listener2=new OnClickListener() {
            public void onClick(View v) {
                setTitle("button2");
                button2.setVisibility(View.INVISIBLE);
                button1.setVisibility(View.VISIBLE);
            }
        };
        setContentView(R.layout.activity_main);
        button1=(Button) findViewById(R.id.button1);
        button1.setOnClickListener(listener1);
        button2=(Button) findViewById(R.id.button2);
        button2.setOnClickListener(listener2);
    }
}

ポイント:INVISIBLE と GONE の違い

setVisibility() に指定できる主な値は以下の3つです。

  • View.VISIBLE:ボタンを通常どおり表示します。
  • View.INVISIBLE:ボタンは非表示になりますが、レイアウト上のスペースは保持されます。
  • View.GONE:ボタンを非表示にし、レイアウト上のスペースも削除します(完全に取り除いたように振る舞います)。

ボタンを「削除したように」見せたい場合は View.GONE を、スペースを空けたまま見えなくしたい場合は View.INVISIBLE を使用すると、目的に応じたUI制御が可能です。

手順4:AndroidManifest.xml にコードを追加する

Manifests/AndroidManifest.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.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」アイコンをクリックします。デバイスの選択画面で接続したスマートフォンを選択すると、実機の画面にアプリが表示されます。

button1 をタップすると button1 が非表示になり button2 が表示され、button2 をタップするとその逆の動作が確認できます。このように setVisibility() を使えば、ボタンの表示・非表示を簡単に切り替えることができます。

まとめ

本記事では、Androidアプリでボタンを非表示にしたり、画面から実質的に削除したりする方法を紹介しました。ポイントは以下の通りです。

  • setVisibility(View.INVISIBLE) でスペースを保持したまま非表示にできる
  • setVisibility(View.GONE) でスペースごと削除できる
  • setVisibility(View.VISIBLE) で再表示できる

このテクニックは、条件に応じてUI要素を出し分けたい場面で非常に役立ちます。ぜひ実際のアプリ開発に活用してみてください。

  1. 【Android】ホームボタンの押下を検知する方法|onUserLeaveHint()の実装手順を解説

    はじめに:Androidでホームボタンは「上書き」できるのか? 結論から言うと、Androidではセキュリティ上の設計思想により、ホームボタンの動作そのものを完全に無効化したり乗っ取ったりすることはできません。これは、ユーザーがいつでもアプリから抜けられるようにするためのGoogleの意図的な仕様です。しかし、onUserLeaveHint()というコールバックメソッドを利用すれば、「ユーザーがホームボタンを押してアプリを離れようとした瞬間」を検知することは可能です。本記事では、ホームボタンが押されたタイミングでToastメッセージを表示するサンプルアプリの作成手順を、ステップごとにわかりやす

  2. 【Android】ボタンの角を丸くする方法を徹底解説!カスタムドローアブルで実装する手順

    このチュートリアルでは、Androidアプリでボタンの角を丸く表示する方法を、実際のコード例とともにわかりやすく解説します。カスタムドローアブル(Drawable)を活用することで、通常時・フォーカス時・押下時といったボタンの状態に応じた角丸デザインも柔軟に実現できます。 手順1:Android Studioで新規プロジェクトを作成する まずはAndroid Studioを起動し、メニューから「File → New Project」を選択して新しいプロジェクトを作成しましょう。必要な項目をすべて入力し、プロジェクトのセットアップを完了させてください。 手順2:レイアウトファイル(activit