[android] EditText에서 키패드 팝업을 비활성화하는 방법은 무엇입니까?
내 앱에서 내 모든 화면의 첫 번째보기는 EditText이므로 화면으로 이동할 때마다 화면 키패드가 나타납니다. 이 팝업을 비활성화하고 EditText를 수동으로 클릭했을 때 활성화하려면 어떻게해야합니까 ????
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
eT.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
}
}
});
xml 코드 :
<ImageView
android:id="@+id/feedPageLogo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_feed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/go" />
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_feed"
android:layout_toRightOf="@id/feedPageLogo"
android:hint="@string/search" />
<TextView
android:id="@+id/feedLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/feedPageLogo"
android:gravity="center_vertical|center_horizontal"
android:text="@string/feed"
android:textColor="@color/white" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsLayout_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/iwant"
android:textColor="@color/black" />
<Button
android:id="@+id/shareButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/share"
android:textColor="@color/black" />
<Button
android:id="@+id/profileButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/profile"
android:textColor="@color/black" />
</LinearLayout>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/feedListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/ButtonsLayout_feed"
android:layout_below="@id/feedLabel"
android:textSize="15dp" >
</ListView>
세 번째 뷰 (EditText)는 포커스가있는 곳입니다.
답변
최상의 솔루션은 프로젝트 매니페스트 파일 (AndroidManifest.xml) 에 있습니다. 다음 속성을 activity
구성 에 추가합니다.
android : windowSoftInputMode = “stateHidden”
예:
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden" />
기술:
- 활동이 사용자주의의 초점이 될 때 소프트 키보드의 상태 (숨겨 지거나 표시됨)입니다.
- 활동의 기본 창에 대한 조정-소프트 키보드를위한 공간을 만들기 위해 크기가 더 작게 조정되었는지 또는 창 일부가 소프트 키보드로 덮일 때 현재 포커스가 보이도록 내용이 이동되는지 여부.
도입 :
- API 레벨 3.
참고 :
여기에서 설정된 값 ( “stateUnspecified”및 “adjustUnspecified”제외)은 테마에 설정된 값을 재정의합니다.
답변
EditText 위에 ‘가짜’초점을 맞춘보기를 만들어야합니다.
다음과 같은 것 :
<!-- Stop auto focussing the EditText -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true">
</LinearLayout>
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="text" />
이 경우에는 LinearLayout을 사용하여 포커스를 요청했습니다. 도움이 되었기를 바랍니다.
이것은 완벽하게 작동했습니다 … Zaggo0 덕분에
답변
edittext.setShowSoftInputOnFocus(false);
이제 원하는 사용자 정의 키보드를 사용할 수 있습니다.
답변
사람들은 여기에 많은 훌륭한 솔루션을 제안했지만 EditText와 함께이 간단한 기술을 사용했습니다 (Java 및 AnroidManifest.xml에는 아무것도 필요하지 않음). Focusable 및 focusableInTouchMode를 EditText에서 직접 false로 설정하십시오.
<EditText
android:id="@+id/text_pin"
android:layout_width="136dp"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textAlignment="center"
android:inputType="numberPassword"
android:password="true"
android:textSize="24dp"
android:focusable="false"
android:focusableInTouchMode="false"/>
여기서 내 의도는 사용자에게 PIN을 입력하도록 요청하고 사용자 지정 PIN 패드를 표시하려는 앱 잠금 활동에서이 편집 상자를 사용하는 것입니다. Android Studio 2.1에서 minSdk = 8 및 maxSdk = 23으로 테스트되었습니다.
답변
활동 클래스에 아래 코드를 추가하십시오.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
사용자가 EditText를 클릭하면 키보드가 팝업됩니다.
답변
다음 코드를 사용하여 화상 키보드를 비활성화 할 수 있습니다.
InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(editText.getWindowToken(), 0);
답변
두 가지 간단한 솔루션 :
첫 번째 솔루션 은 매니페스트 xml 파일의 코드 줄 아래에 추가됩니다. Manifest 파일 (AndroidManifest.xml)에서 활동 구성에 다음 속성을 추가하십시오.
android : windowSoftInputMode = “stateHidden”
예:
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden" />
두 번째 솔루션 은 활동에서 코드 줄 아래에 추가하는 것입니다.
//Block auto opening keyboard
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
위의 솔루션 중 하나를 사용할 수 있습니다. 감사