프로그래밍 방식으로 EditText에서 포커스를 설정하고 키보드를 표시하는 방법
다음과 같은 뷰가 포함 된 레이아웃이 있습니다.
<LinearLayout>
<TextView...>
<TextView...>
<ImageView ...>
<EditText...>
<Button...>
</linearLayout>
EditText
프로그래밍 방식으로 포커스를 설정 (키보드 표시)하려면 어떻게해야합니까?
나는 이것을 시도했지만 Activity
정상적으로 시작할 때만 작동 하지만에서 시작하면 TabHost
작동하지 않습니다.
txtSearch.setFocusableInTouchMode(true);
txtSearch.setFocusable(true);
txtSearch.requestFocus();
이 시도:
EditText editText = (EditText) findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
http://developer.android.com/reference/android/view/View.html#requestFocus ()
사용하다:
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
이것은 ungalcrys 덕분에 나를 위해 일했습니다.
키보드 표시 :
editText = (EditText)findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager)getSystemService(this.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
키보드 숨기기 :
InputMethodManager imm = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
showSoftInput
나를 위해 전혀 작동하지 않았습니다.
입력 모드를 설정해야한다고 생각했습니다. android:windowSoftInputMode="stateVisible"
(매니페스트의 활동 구성 요소)
이 도움을 바랍니다!
final EditText tb = new EditText(this);
tb.requestFocus();
tb.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(tb, InputMethodManager.SHOW_IMPLICIT);
}
}, 1000);
소프트 키보드 표시 및 숨기기를위한 kotlin 확장은 다음과 같습니다.
fun View.showKeyboard() {
this.requestFocus()
val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
fun View.hideKeyboard() {
val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}
그럼 당신은 이것을 할 수 있습니다 :
editText.showKeyboard()
// OR
editText.hideKeyboard()
Here is KeyboardHelper Class for hiding and showing keyboard
import android.content.Context;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
/**
* Created by khanhamza on 06-Mar-17.
*/
public class KeyboardHelper {
public static void hideSoftKeyboard(Context context, View view) {
if (context == null) {
return;
}
view.requestFocus();
view.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}, 1000);
}
public static void hideSoftKeyboard(Context context, EditText editText) {
editText.requestFocus();
editText.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
}, 1000);
}
public static void openSoftKeyboard(Context context, EditText editText) {
editText.requestFocus();
editText.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
}, 1000);
}
}
First way:
etPassword.post(() -> {
etPassword.requestFocus();
InputMethodManager manager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
manager.showSoftInput(etPassword, InputMethodManager.SHOW_IMPLICIT);
});
Second way:
In Manifest:
<activity
android:name=".activities.LoginActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible"/>
In code:
etPassword.requestFocus();
I tried a lot ways and it's not working tho, not sure is it because i'm using shared transition from fragment to activity containing the edit text.
Btw my edittext is also wrapped in LinearLayout.
I added a slight delay to request focus and below code worked for me: (Kotlin)
et_search.postDelayed({
editText.requestFocus()
showKeyboard()
},400) //only 400 is working fine, even 300 / 350, the cursor is not showing
showKeyboard()
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)
I couldn't get any of these answers to work on their own. The solution for me was to combine them:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
editText.requestFocus();
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
I'm not sure why that was required for me -- according to the docs it seems that either method should have worked on their own.
'Programing' 카테고리의 다른 글
MySQL 사용자 DB에 비밀번호 열이 없습니다-OSX에 MySQL 설치 (0) | 2020.06.05 |
---|---|
상속과 다형성의 주요 차이점은 무엇입니까? (0) | 2020.06.05 |
“vcpu reg를 동기화하지 못했습니다”오류는 어떻게 해결합니까? (0) | 2020.06.05 |
주어진 텍스트에서 가장 일반적으로 사용되는 단어의 ASCII 차트 작성 (0) | 2020.06.05 |
Xcode iPhone 시뮬레이터 스케일 및 크기 조정 (0) | 2020.06.05 |