내 앱 중 하나에 "열기 화면"(기본적으로 메뉴)이 있고 그 EditText
뒤에 몇 가지 Button
가 있습니다. 문제는 여러 사용자가 앱을 열 때을 터치하지 않고도 화면 키보드가 자동으로 팝업된다는보고입니다 EditText
. 내가 알 수있는 한,이 모든 사용자는 HTC Hero를 사용하고 있습니다.
1.5의 버그입니까? 내가 할 수있는 일이 있습니까?
내 앱 중 하나에 "열기 화면"(기본적으로 메뉴)이 있고 그 EditText
뒤에 몇 가지 Button
가 있습니다. 문제는 여러 사용자가 앱을 열 때을 터치하지 않고도 화면 키보드가 자동으로 팝업된다는보고입니다 EditText
. 내가 알 수있는 한,이 모든 사용자는 HTC Hero를 사용하고 있습니다.
1.5의 버그입니까? 내가 할 수있는 일이 있습니까?
답변:
활동의 onCreate 메소드에서 다음 코드 행을 사용하여 사용자가 EditText를 클릭 할 때만 키보드가 팝업되도록 할 수 있습니다
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
이것은 안드로이드 3.0, 3.1, 3.2, 4.0에서 작동합니다-편집에 사용되는 편집기 (Eclipse 3.7)
소프트웨어 키보드를 숨기고 자하는 각 활동에 대해 애플리케이션의 매니페스트 XML 파일에 'windowSoftInputMode = "stateHidden"'을 배치하십시오. 이는 키보드가 자동으로 나타나지 않고 사용자가 컴퓨터를 '클릭'해야한다는 의미입니다. 텍스트 필드를 불러옵니다. 나는 약 1 시간 동안 효과가있는 것을 찾아서 공유 할 것이라고 생각했다.
이것을 AndroidManifest.xml에 추가하십시오 .
android:windowSoftInputMode="stateHidden|adjustResize"
완벽하게 작동합니다. :)
requestFocus()
.
이 코드는 모든 안드로이드 버전에서 작동합니다 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//Automatic popping up keyboard on start Activity
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
or
//avoid automatically appear android keyboard when activity start
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
해당 Android 버전에서보기가 팽창되면 포커스는 기본적으로 첫 번째 초점 제어로 설정되며 물리적 키보드가 없으면 화상 키보드가 나타납니다.
이 문제를 해결하려면 다른 곳에 초점을 명시 적으로 설정하십시오. 포커스가 EditText 이외의 것으로 설정되어 있으면 화상 키보드가 나타나지 않습니다.
에뮬레이터에서 Android 1.5를 실행하여이를 테스트 해 보셨습니까?
프로그래밍 방식으로 할 수 있습니다.
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
또는 설정 android:windowSoftInputMode="stateHidden"
에 <activity tag
내부AndroidManifest.xml
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(_enterPin.FindFocus(), 0);
* 이것은 Android.xamarin 및 FindFocus () 용입니다. 위 코드 앞에 _enterPin.RequestFocus ()가 있으므로 _enterPin EditText에 대한 키보드를 표시하므로 현재 포커스가있는이 뷰를 기반으로하는 계층 구조의 뷰를 검색합니다.