하위 위젯이없는 활동이 있으며 해당 xml 파일은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="true"
>
</LinearLayout>
활동이 시작되는 동안 프로그래밍 방식으로 소프트 키보드를 열고 싶습니다. 지금까지 시도한 것은
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
지침을 좀주세요.
답변
다음 줄을 사용하여 onclick 이벤트 내에서 소프트 키보드를 수동으로 표시했으며 키보드가 표시됩니다.
InputMethodManager inputMethodManager =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(
linearLayout.getApplicationWindowToken(),
InputMethodManager.SHOW_FORCED, 0);
그러나 활동이 열리는 동안 여전히 이것을 열 수 없으므로 이에 대한 해결책이 있습니까?
답변
매니페스트 파일 <activity>
에서 활동이 시작될 때 키보드를 표시하려는에 다음을 추가해보세요 .
android:windowSoftInputMode="stateVisible"
이렇게하면 활동이 시작될 때 키보드가 표시됩니다.
더 많은 옵션을 보려면 문서를 확인하세요 .
답변
아래 코드를 따르십시오. 나는 당신의 문제가 해결 될 것이라고 확신합니다.
if (imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
답변
이것은 작품입니다
<activity
...
android:windowSoftInputMode="stateVisible" >
</activity>
또는
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
답변
내가 필요한 것은 매우 정확한 순간에 키보드를 노출하는 것뿐이었습니다. 이것은 나를 위해 일했습니다! 감사합니다 Benites.
private Handler mHandler= new Handler();
그리고 매우 정확한 순간에 :
mHandler.post(
new Runnable() {
public void run() {
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(yourEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
yourEditText.requestFocus();
}
});
답변
다음 줄을 사용하여 onclick 이벤트 내에서 수동으로 소프트 키보드를 표시했습니다.
public void showKeyboard(final EmojiconEditText ettext){
ettext.requestFocus();
ettext.postDelayed(new Runnable(){
@Override public void run(){
InputMethodManager keyboard=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext,0);
}
}
,200);
}
답변
onResume 메소드에 넣으십시오.
findViewById(R.id.root_view_of_your_activity_layout).post(
new Runnable() {
public void run() {
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(yourEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
yourEditText.requestFocus();
}
});
OS가 onResume 메서드를 실행할 때 모든 뷰를 그릴 수 있는지 확인할 수 없기 때문에 runnable이 필요하므로 루트 레이아웃에서 호출 된 post 메서드는 모든 뷰가 준비 될 때까지 대기하게합니다.