【Android開発】ソフトウェアキーボードを閉じる・非表示にする方法を解説
Androidでソフトウェアキーボードを閉じるには?
Androidアプリを開発していると、ユーザーが入力を終えたタイミングやボタンをタップした際に、自動的に表示されたソフトウェアキーボード(仮想キーボード)を強制的に閉じたい場面があります。本記事では、InputMethodManagerを使ってキーボードを非表示にする具体的な実装手順を、サンプルコード付きでわかりやすく解説します。
ステップ1:新規プロジェクトを作成する
Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力し、プロジェクトの雛形を生成してください。
ステップ2:レイアウトファイル(activity_main.xml)を編集する
res/layout/activity_main.xml に以下のコードを追加します。
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout 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"
tools:context = ".MainActivity">
<EditText
android:id = "@+id/editext"
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
</EditText>
<Button
android:id = "@+id/button"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "タップしてキーボードを隠す"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintLeft_toLeftOf = "parent"
app:layout_constraintRight_toRightOf = "parent"
app:layout_constraintTop_toTopOf = "parent" />
</android.support.constraint.ConstraintLayout>このレイアウトには、キーボードを表示させるためのEditTextと、キーボードを閉じるためのButtonを配置しています。
ステップ3:MainActivity.javaにキーボードを隠す処理を実装する
src/MainActivity.java に以下のコードを追加します。
import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Handler mHandler;
ProgressDialog mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
EditText editext = findViewById(R.id.editext);
editext.requestFocus();
button.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
hideKeybaord(v);
break;
}
}
private void hideKeybaord(View v) {
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
}
}上記のコードでは、ボタンがクリックされると hideKeybaord() メソッドが呼び出され、キーボードが非表示になります。キーボードを隠すための核となる部分は次の2行です。
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
まず getSystemService(INPUT_METHOD_SERVICE) でInputMethodManagerのインスタンスを取得し、続いて hideSoftInputFromWindow() にウィンドウトークンを渡すことで、現在表示中のソフトウェアキーボードを閉じています。この手法は、入力欄が複数ある画面やダイアログでも汎用的に使える定番の方法です。
ステップ4:マニフェストファイルに設定を追加する
AndroidManifest.xml に以下のコードを追加します。
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android" package = "com.example.andy.myapplication">
<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" android:windowSoftInputMode = "stateAlwaysVisible">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>ここでのポイントは android:windowSoftInputMode = "stateAlwaysVisible" の指定です。この設定により、EditTextがフォーカスを受け取ると常にキーボードが自動的に表示されるようになり、今回のデモの動作確認がしやすくなります。
アプリを実行して動作を確認する
それでは実際にアプリを動かしてみましょう。Android端末をパソコンに接続している状態で、Android Studioから任意のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイスを選択して実行すると、まずEditTextにフォーカスが当たり、キーボードが自動的に表示された初期画面が確認できます。

次にボタンをタップすると、以下のようにキーボードが非表示になります。

まとめ
Androidでソフトウェアキーボードを強制的に閉じるには、InputMethodManagerの hideSoftInputFromWindow() を利用するのが基本です。検索画面やフォーム入力など、ユーザーの操作性を左右する場面でぜひ活用してみてください。
-
Androidのキーボードを変更する方法を徹底解説!機種別の手順とおすすめアプリもご紹介
Android OSの大きな魅力のひとつは、自由度の高いカスタマイズ性です。その代表格ともいえるのが、スマートフォンの初期搭載(ストック)キーボードを好みのものへ変更できる機能です。この変更は、Samsung、Google、Huawei、Xiaomiなど、端末のブランドを問わず行うことができます。多くの純正キーボードは十分に優秀ですが、ユーザーのニーズによっては別のキーボードが必要になることもあります。例えば、他の言語で入力したい場合や、数式で数学記号を使いたい場合など、標準キーボードが対応していない機能が必要なケースです。Androidキーボードの変更手順は基本的にどの端末でも共通しています
-
AndroidでIPアドレスを非表示にする方法|VPN・Tor・プロキシの使い方を徹底解説
インターネットを語るうえで欠かせない用語の一つが「IPアドレス」です。名前は聞いたことがあっても、その仕組みまで詳しく理解する機会は意外と少ないもの。AndroidでIPアドレスを非表示にする前に、まずはIPアドレスの基本と仕組みを押さえておきましょう。 そもそもIPアドレスとは? 「IP」は「Internet Protocol(インターネットプロトコル)」の略で、ウェブ閲覧をはじめとするインターネット通信全体を支える一連の規則・プロトコルのことです。IPアドレスとは、ネットワークに接続された機器に割り当てられる固有の識別番号であり、これによってIPベースのネットワーク上で他の端末と通信でき