スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

キーボードを隠す

入力完了後に隠す


ユーザーに入力を促すアプリケーションでは、ソフトウェアキーボードを制御して表示・非表示を行いたいときがあります。

たとえば、EditTextに入力を行ってボタンを押したのにまだソフトキーボードが居座っていたら邪魔ですね。

入力関係のコントロールを行うのは、android.view.inputmethod.InputMethodManager になります。

キーイベントの取得 の記事のJavaファイルに追加してみましょう。

package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.EditText;
import android.view.View.OnKeyListener;
import android.view.KeyEvent;
import android.widget.TextView;
import android.view.inputmethod.InputMethodManager;
import android.content.Context;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
onEnter();
}
});

EditText editText1=(EditText)findViewById(R.id.editText1);
editText1.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& keyCode == KeyEvent.KEYCODE_ENTER) {
onEnter();
return true;
}
return false;
}
});
}
public void onEnter(){
TextView textView1=(TextView)findViewById(R.id.textView1);
EditText editText1=(EditText)findViewById(R.id.editText1);
textView1.setText(editText1.getText().toString()+" と入力されました。");

InputMethodManager imm
= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow
(editText1.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}


InputMethodManagerのインスタンスは、Contextクラスの getSystemService()メソッドで取得します。

public abstract Object getSystemService (String name)

引数のnameには、取得したいサービスの名前(定数)を指定します。今回は入力操作を取得したいので、INPUT_METHOD_SERVICE を指定しました。

こういった定数は、Contextクラス(レファレンス)で定められています。

ソフトキーボードを隠すのは、hideSoftInputFromWindow()メソッドです。

boolean hideSoftInputFromWindow(IBinder windowToken, int flags)

引数には、windowTokenにウインドウの識別子、flagsにソフトキーボードの非表示設定フラグを指定します。

非表示設定フラグは、0でも大体間に合いますが、
  • HIDE_IMPLICIT_ONLY : 予測変換表示のみ非表示にして、ソフトキーボード自体は表示したままにする
  • HIDE_NOT_ALWAYS : 予測変換表示もソフトキーボードも非表示にする
が使えます。


<?xml version="1.0" encoding="utf-8"?>
<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/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/pleaseinput"
/>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="50"
android:maxLines="1"
android:inputType="text">
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonclick"
android:layout_gravity="center">
</Button>
</LinearLayout>



<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloAndroid</string>
<string name="pleaseinput">入力してください。</string>
<string name="buttonclick">Click</string>
</resources>


実行します。

20110917_1


20110917_2
ソフトキーボードが消えました。


関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/53-97d7827c
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。