(8) Androidのソフトキーボードを閉じる。

投稿者: | 2018年9月30日

8,710 views

この記事は最終更新から 2264日 が経過しています。

1. やりたいこと

(4) BMI計算アプリを作る。 では、[計算実行]ボタンを押した後もソフトキーボードが表示されたままだった。

キーボード入力が不要になったら消えていてほしい。

今回はこれを実装してみたい。

2. やってみる!

(1) 方針

[計算実行]ボタンを押下し、算出した BMI値を表示した後、身長体重の入力に使用したソフトキーボードを消去する。

(2) 実装

InputMethodManager を参照のこと。

下記の★★★の 2行を追加するだけでよい。

package net.dogrow.www.mybmi;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private Button execCalcBMI;     // [計算実行]ボタンへの参照
    private EditText input_H;       // 身長入力欄への参照
    private EditText input_W;       // 体重入力欄への参照
    private TextView bmi_result;    // BMI算出結果表示欄への参照

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        execCalcBMI = findViewById(R.id.button_exec_calc);  // BMI計算実行ボタンの参照を取得
        input_H = findViewById(R.id.input_H_view);  // 身長入力欄の参照を取得
        input_W = findViewById(R.id.input_W_view);  // 体重入力欄の参照を取得
        bmi_result = findViewById(R.id.text_BMI_view);  // 体重入力欄の参照を取得

        // [計算実行]ボタン押下時の処理を追加
        execCalcBMI.setOnClickListener(new View.OnClickListener(){
            @Override public void onClick(View v){
                // 身長と体重の入力値を取得
                double input_H_double = Double.valueOf(input_H.getText().toString());
                double input_W_double = Double.valueOf(input_W.getText().toString());
                double BMI = calcBMI(input_H_double, input_W_double);
                // BMI算出結果を表示
                String result = String.format("%.1f", BMI);
                bmi_result.setText(result);

                //★★★ ソフトキーボードを隠す。
                InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        });
    }

    // BMI算出
    private double calcBMI( double h, double w ){
        // BMI = 体重 ÷ (身長 x 身長)
        double bmi = 0;
        if(w > 0 && h > 0) {
            bmi = w / (h * h) * 10000;
        }
        return bmi;
    }
}

できた!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)