ココでわかるAndroidアプリ開発

あなたのプログラミングを徹底サポート

【Android】viewの表示・非表示を切り替える方法

  • 作成日:2022/01/21

Androidアプリでviewの表示・非表示を切り替える方法です。

setVisibilityを使う

viewの表示・非表示を切り替えるにはsetVisibilityメソッドを使います。 引数に設定する値により表示にするか非表示にするか変わります。

setVisibility
  • setVisibility(View.VISIBLE)・・・表示
  • setVisibility(View.INVISIBLE)・・非表示(viewの領域の残る)
  • setVisibility(View.GONE)・・・・非表示(viewの領域は残らない)

「VISIBLE」はその名の通りviewを表示します。初期値はこれになっています。

「INVISIBLE」はviewを非表示にしますが、viewがある領域は残ります。単にviewを見えなくなるのです。

「GONE」はviewを非表示にするだけでなく、viewがある領域まで消します。

javaソースコード

javaのソースコードでは以下のようにします。

MainActivity.java

        setContentView(R.layout.activity_main);
        TextView txt2 = findViewById(R.id.txt2);
        
        txt2.setVisibility(View.INVISIBLE);

2行目でレイアウトファイルを読み込み、3行目で表示・非表示を切り替えたいviewを取得しています。 5行目で取得したviewを非表示(INVISIBLE)にしています。

レイアウトファイルは次のようにしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
        <TextView
            android:id="@+id/txt2"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:textColor="#000"
            android:text="テキスト2"
            android:textSize="30sp"
            android:background="#ffa07a"
            android:gravity="center_horizontal"
            android:layout_gravity="center"
            />
    
</androidx.coordinatorlayout.widget.CoordinatorLayout>

TextViewを1つ置いているだけですね。

サンプル

画面を使って簡単なサンプルで解説します。

レイアウトファイル

まずはレイアウトファイルを以下のように用意しました。テキストを3つ縦並びにしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <TextView
            android:id="@+id/txt1"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:textColor="#000"
            android:text="テキスト1"
            android:textSize="30sp"
            android:background="#e0ffff"
            android:gravity="center_horizontal"
            android:layout_gravity="center"
            />
        <TextView
            android:id="@+id/txt2"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:textColor="#000"
            android:text="テキスト2"
            android:textSize="30sp"
            android:background="#ffa07a"
            android:gravity="center_horizontal"
            android:layout_gravity="center"
            />
        <TextView
            android:id="@+id/txt3"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:textColor="#000"
            android:text="テキスト3"
            android:textSize="30sp"
            android:background="#fffacd"
            android:gravity="center_horizontal"
            android:layout_gravity="center"
            />
    </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

VISIBLEの場合

jテキスト1~3全てにVISIBLEを設定します。

MainActivity.java

        TextView txt1 = findViewById(R.id.txt1);
        txt1.setVisibility(View.VISIBLE);

        TextView txt2 = findViewById(R.id.txt2);
        txt2.setVisibility(View.VISIBLE);

        TextView txt3 = findViewById(R.id.txt3);
        txt3.setVisibility(View.VISIBLE);

画面は次のようになります。

VISIBLE

上記で解説した通り、初期値はVISIBLEなのでわざわざ指定しなくてもviewは表示されます。 使うケースといえば、一旦非表示にしたviewを再度表示したい場合などでしょう。

INVISIBLEの場合

次にテキスト1と3はVISIBLEのまま、テキスト2だけをINVISIBLEに設定してみます。

MainActivity.java

        TextView txt1 = findViewById(R.id.txt1);
        txt1.setVisibility(View.VISIBLE);

        TextView txt2 = findViewById(R.id.txt2);
        txt2.setVisibility(View.INVISIBLE);

        TextView txt3 = findViewById(R.id.txt3);
        txt3.setVisibility(View.VISIBLE);

画面は次のようになります。

INVISIBLE

テキスト2は見えなくなりますが、領域は残ったままとなります。

GONEの場合

最後にテキスト1と3はVISIBLEのまま、テキスト2だけをGONEに設定した場合です。

MainActivity.java

        TextView txt1 = findViewById(R.id.txt1);
        txt1.setVisibility(View.VISIBLE);

        TextView txt2 = findViewById(R.id.txt2);
        txt2.setVisibility(View.GONE);

        TextView txt3 = findViewById(R.id.txt3);
        txt3.setVisibility(View.VISIBLE);

画面は次のようになります。

GONE

テキスト2は見えなくなり領域も消えるので、下にあるテキスト3が詰める形となります。

この記事のシェアはこちらから

カテゴリー

カテゴリーの一覧です。

Contact

当サイトへのご連絡は以下よりお願いします。

© Copyright 2022 ココでわかるAndroidアプリ開発