

액티비티 시작 시 키보드 올리는 2가지 방법입니다. 액티비티에서 소스 코드 입력하는 방법과 매니페스트에서 설정하는 방법이 있습니다.
1. 액티비티에서 소스 추가하는 방법
private EditText ReplyEdit;
ReplyEdit = (EditText)findViewById(R.id.reply_write_edit);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(ReplyEdit, 0);
ReplyEdit는 EditText 변수명입니다. 단, 이렇게 하는 경우에도 키보드가 올라오지 않을 수 있습니다. 이유는 ReplyEdit의 커서가 포커싱이 되지 않은 상태에서 showSoftInput을 해서 그렇습니다.
private EditText ReplyEdit;
ReplyEdit = (EditText)findViewById(R.id.reply_write_edit);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(ReplyEdit, 0);
ReplyEdit.postDelayed(new Runnable()
{
@Override
public void run()
{
ReplyEdit.requestFocus();
imm.showSoftInput(ReplyEdit, 0);
}
}, 100);
위의 방법으로 postDelayed를 주고 requestFocus를 준 다음 showSoftInput을 하면 정상적으로 키보드가 올라옵니다.
버튼이나 액션처리가 아닌 액티비티 시작 시 키보드를 바로 띄우기 위해서는 위 두 번째 방법을 추천합니다.
2. 메니페스트(AndroidManifest.xml) 에서 설정하는 방법
<activity android:name="oatp.co.kr.appletree.Activity_Reply_write" android:windowSoftInputMode="stateAlwaysVisible"/>
추가) 키보드 내리는 방법
private EditText ReplyEdit;
ReplyEdit = (EditText)findViewById(R.id.reply_write_edit);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(ReplyEdit.getWindowToken(), 0);
반응형
그리드형