EditText Keyboard 내리기

Posted by ITPangPang
2016. 11. 24. 22:51 안드로이드(android)/위젯(Widget)


EditText Keyboard

내리기


ㆍ 간단하게 EditText를 사용할때 나오는 Keyboard를

    강제로 내리는 방법에 대해 알아보도록 하겠습니다


ㆍ 강제로 내리는 경우는 매우 다양하겠지만, 간단하게 

    로그인 화면이라고 가정하고 테스트를 해보겠습니다.



어떻게 내리나?

어렵지 않습니다.

딱 2줄만 알고 있으면 됩니다.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0);

요렇게만 써주시면 끝납니다.



직접 확인해보자!


이런 로그인 화면이 있다고

가정했을때,

사용자의 편의를 위해서

Back키 외에도 화면의

바깥 영역을 터치하면 키보드가

내려가도록 하면 괜찮겠죠?


그리고 로그인 버튼을 눌렀을때

성공해서 다른 액티비티나 Fragment로

넘어가면 모르겠지만,


로그인이 실패하거나, 또는 화면을 넘길때

Viewpager나 다른 Dialog로 띄우는 형태로

넘긴다면 위에 키보드가 그대로 남아있을 수 있습니다.


그래서 로그인 버튼을 눌렀을때에도 키보드를

강제로 내리도록 하겠습니다.


[activity.xml]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.tistory.itpangpang.edittextkeyboard.MainActivity">

<EditText
android:id="@+id/et_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="아이디를 입력하세요"
/>
<EditText
android:id="@+id/et_pw"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="패스워드를 입력하세요"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="로그인"/>
</LinearLayout>


[MainActivity.java]

public class MainActivity extends AppCompatActivity
{
InputMethodManager imm;
EditText et_id;
EditText et_pw;
Button btn;
LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ll = (LinearLayout)findViewById(R.id.ll);
btn = (Button)findViewById(R.id.btn);
et_id = (EditText)findViewById(R.id.et_id);
et_pw = (EditText)findViewById(R.id.et_pw);
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

ll.setOnClickListener(myClickListener);
btn.setOnClickListener(myClickListener);
}

View.OnClickListener myClickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
hideKeyboard();
switch (v.getId())
{
case R.id.ll :
break;

case R.id.btn :
break;
}
}
};

private void hideKeyboard()
{
imm.hideSoftInputFromWindow(et_id.getWindowToken(), 0);
imm.hideSoftInputFromWindow(et_pw.getWindowToken(), 0);

}
}


끝!