[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);

위의 솔루션 중 하나를 사용할 수 있습니다. 감사