จะปิดการใช้งานป๊อปอัพปุ่มกดเมื่ออยู่บน edittext ได้อย่างไร


85

ในแอปของฉันมุมมองแรกของหน้าจอทั้งหมดของฉันคือ 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) คือจุดที่โฟกัสอยู่


คุณสามารถโพสต์โค้ด xml ของคุณได้อย่างมีความสุข
user1213202

คำตอบ:


178

ทางออกที่ดีที่สุดอยู่ในไฟล์ Project Manifest (AndroidManifest.xml)เพิ่มแอตทริบิวต์ต่อไปนี้ในactivityโครงสร้าง

android: windowSoftInputMode = "stateHidden"


ตัวอย่าง:

    <activity android:name=".MainActivity" 
              android:windowSoftInputMode="stateHidden" />

คำอธิบาย:

  • สถานะของแป้นพิมพ์อ่อน - ไม่ว่าจะซ่อนอยู่หรือมองเห็นได้ - เมื่อกิจกรรมกลายเป็นจุดสนใจของผู้ใช้
  • การปรับเปลี่ยนที่ทำกับหน้าต่างหลักของกิจกรรมไม่ว่าจะเป็นการปรับขนาดให้เล็กลงเพื่อให้มีที่ว่างสำหรับแป้นพิมพ์แบบนุ่มหรือว่าเนื้อหาจะเลื่อนไปมาเพื่อให้โฟกัสปัจจุบันมองเห็นได้เมื่อส่วนหนึ่งของหน้าต่างถูกปิดด้วยแป้นพิมพ์

แนะนำใน:

  • API ระดับ 3

เชื่อมโยงไปยังเอกสาร

หมายเหตุ: ค่าที่ตั้งไว้ที่นี่ (นอกเหนือจาก "stateUnspecified" และ "adjustmentUnspecified") จะลบล้างค่าที่ตั้งไว้ในธีม


3
วิธีนี้จะล้มเหลวหากคุณมีช่องข้อความผสมกันในกิจกรรมบางช่องที่คุณต้องการมีแป้นพิมพ์และวิธีอื่นที่คุณไม่มี ดูคำตอบของฉันสำหรับวิธีนี้สามารถทำได้บนพื้นฐานต่อช่องข้อความในสถานการณ์ดังกล่าว
slogan621

@ slogan621 โปรดสละเวลาสักครู่เพื่อทำความเข้าใจกับคำถามที่นี่ คุณอยู่บนสัมผัสที่แตกต่างกัน!
Skynet

83

คุณต้องสร้างมุมมองเหนือ 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


26
การเพิ่มมุมมองที่ไร้ประโยชน์เป็นวิธีแก้ปัญหาย่อยที่ดีที่สุดเมื่อเทียบกับการเพิ่ม android: windowSoftInputMode = "stateHidden" ในรายการรายการของกิจกรรม
Chris Horner

@ChrisHorner ทั้งสองอย่างที่คุณต้องระบุสำหรับกิจกรรมหรือเค้าโครง ... เป็นสิ่งที่น่ารำคาญเหมือนกัน .. ทั้งสองทำงานได้ดีสำหรับโซลูชันนี้
Nicolas Jafelle

2
ฉันลองวิธีแก้ปัญหาทั้งหมดแล้วและอันนี้เป็นวิธีเดียวที่ทำงานได้อย่างถูกต้อง! ขอบคุณที่ชัดเจนและเรียบง่าย
alfo888_ibg

การเพิ่มมุมมองที่ไร้ประโยชน์ไม่ใช่ความคิดที่ดีอย่างที่ @ChrisHorner กล่าวควรเพิ่มแอตทริบิวต์ลงในไฟล์ Manifest ตามที่เขาแนะนำหรือเพิ่มรหัสบรรทัดนี้ในกิจกรรมของคุณ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
aB9

1
การใช้งานลำดับชั้นดูแย่มาก! ฉันคิดว่าควรหลีกเลี่ยงถ้าเป็นไปได้
sud007

43
     edittext.setShowSoftInputOnFocus(false);

ตอนนี้คุณสามารถใช้แป้นพิมพ์แบบกำหนดเองที่คุณต้องการได้แล้ว


ขอบคุณนี่เป็นทางออกเดียวที่เหมาะกับฉัน + มันสั้นและง่าย
สูงสุด

20
พร้อมใช้งานจาก API ระดับ 21
Jithu PS

นี่คือสิ่งที่ฉันกำลังมองหา
Sanjay Joshi

@ JithuP.S ทำไมมันถึงทำงานกับ Karbon Titanium whos ระดับ API คือ 19 ??
尤金寶漢子

23

มีคนแนะนำวิธีแก้ปัญหาที่ยอดเยี่ยมมากมายที่นี่ แต่ฉันใช้เทคนิคง่ายๆนี้กับ EditText ของฉัน (ไม่จำเป็นต้องใช้ java และ AnroidManifest.xml) เพียงตั้งค่าInTouchModeที่สามารถโฟกัสได้และโฟกัสได้ของคุณเป็นเท็จโดยตรงบน EditText

 <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 ที่กำหนดเองของฉัน ทดสอบด้วย minSdk = 8 และ maxSdk = 23 บน Android Studio 2.1

ใส่คำอธิบายภาพที่นี่


สิ่งนี้ทำให้ชีวิตของฉันง่ายขึ้น stackoverflow.com/questions/9577304/…
Mohammed mansoor

20

เพิ่มรหัสด้านล่างในชั้นเรียนกิจกรรมของคุณ

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

แป้นพิมพ์จะป๊อปอัปเมื่อผู้ใช้คลิกที่ EditText


10

คุณสามารถใช้รหัสต่อไปนี้เพื่อปิดใช้งานแป้นพิมพ์บนหน้าจอ

InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(editText.getWindowToken(), 0);

1
และฉันสามารถเปิดใช้งานได้อีกครั้งโดยใช้ EditText.onClick (im.unhideSoftInputFromWindow (editText.getWindowToken (), 0);) หรืออะไรทำนองนั้น ??
Housefly

8

สองวิธีง่ายๆ:

โซลูชันแรกถูกเพิ่มใต้บรรทัดของโค้ดในไฟล์ xml manifest ในไฟล์ 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);

เราสามารถใช้วิธีใดวิธีหนึ่งจากข้างต้น ขอบคุณ


5

ประกาศตัวแปรส่วนกลางสำหรับ InputMethodManager:

 private InputMethodManager im ;

ภายใต้ onCreate () กำหนด:

 im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 im.hideSoftInputFromWindow(youredittext.getWindowToken(), 0);

ตั้งค่า onClickListener เป็นข้อความแก้ไขที่อยู่ใน oncreate ():

 youredittext.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        im.showSoftInput(youredittext, InputMethodManager.SHOW_IMPLICIT);
    }
});

วิธีนี้จะได้ผล


กรุณาโพสต์รหัสของคุณ คุณจะได้รับอะไรบ้างขณะดำเนินการ
AndroGeek

รหัสทั้งหมดอยู่ในคำถามปุ่มกดบนหน้าจอไม่ปรากฏขึ้นเมื่อฉันคลิกที่ข้อความแก้ไข
Housefly

คุณกำลังทดสอบโดยใช้โปรแกรมจำลองหรืออุปกรณ์ หากคุณกำลังลองโดยใช้โปรแกรมจำลองคุณจะไม่ได้รับซอฟต์คีย์ ทดสอบโดยใช้อุปกรณ์ มันจะทำงาน.
AndroGeek

ใช่ฉันใช้อุปกรณ์เพื่อทดสอบ
Housefly

อืมแปลกดี หากคุณสามารถโพสต์รหัสของคุณได้วิธีการที่คุณเขียนอาจช่วยได้ หรือไม่เช่นนั้นรหัสด้านบนทำงานได้ดีในอุปกรณ์ของฉัน
AndroGeek

4

ใช้รหัสต่อไปนี้เขียนไว้ข้างใต้ onCreate()

InputMethodManager inputManager = (InputMethodManager)
                                   getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                   InputMethodManager.HIDE_NOT_ALWAYS);         
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

4

ลองดู ....... ฉันแก้ปัญหานี้โดยใช้รหัส: -

EditText inputArea;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
inputArea = (EditText) findViewById(R.id.inputArea);

//This line is you answer.Its unable your click ability in this Edit Text
//just write
inputArea.setInputType(0);
}

ไม่มีอะไรที่คุณสามารถป้อนโดยเครื่องคิดเลขเริ่มต้นในสิ่งใด ๆ นอกจากคุณสามารถตั้งค่าสตริง

ลองมัน


3

ขอบคุณ @AB สำหรับทางออกที่ดี

    android:focusableInTouchMode="false"

ในกรณีนี้หากคุณจะปิดใช้งานแป้นพิมพ์ในการแก้ไขข้อความให้เพิ่มandroid: focusableInTouchMode = "false"ในแท็กไลน์ edittext

ทำงานให้ฉันใน Android Studio 3.0.1 นาที dk 16, maxsdk26


1
นี่คือความคิดเห็นที่จะA.Bตอบ? หรือเป็นคำตอบของคำถามเดิม? หากนี่เป็นความคิดเห็นสำหรับA.Bคำตอบคุณควรใช้ตัวเลือกความคิดเห็นที่ StackOverflow จัดเตรียมไว้และลบคำตอบนี้สำหรับคำถามเดิม
David Walschots

ขออภัยหากฉันไม่เข้าใจที่จะตอบคำตอบที่ได้รับการแก้ไข ฉันขอขอบคุณ AB สำหรับคำตอบที่ดีในการเคลียร์ปัญหาของฉัน .. ถ้าฉันผิดฉันสามารถลบคำตอบนั้นได้ขอโทษ @DavidWalschots
NZXT

2

ลองด้วยสิ่งนี้:

EditText yourEditText= (EditText) findViewById(R.id.yourEditText); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

ในการปิดคุณสามารถใช้:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
 imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0); 

ลองใช้สิ่งนี้ในรหัสของคุณ:

ed = (EditText)findViewById(R.id.editText1);

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
imm.hideSoftInputFromWindow(ed.getWindowToken(), 0);  

ed.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
        imm.showSoftInput(ed, InputMethodManager.SHOW_IMPLICIT);  
    }
});

มันใช้งานได้เหมือนเดิม .... มีการเปลี่ยนแปลงอะไรบ้างที่ฉันต้องทำในเค้าโครง สำหรับมุมมอง EditText นี้ ??
Housefly

โอเคตอนนี้ใช้งานได้หลังจากเพิ่มแอตทริบิวต์เค้าโครงไม่กี่ ... android: clickable = "true" android: cursorVisible = "false" android: focusable = "false" ขอบคุณ
Housefly

ไม่ทำสิ่งหนึ่งเขียนการซ่อนรหัสแป้นพิมพ์ในวิธีการ edittext.setOnFocusChangeListener () และลอง
user1213202

นี่จะเป็นวิธีแก้ปัญหาหากคุณสามารถระบุได้ว่าจะใช้การเรียก hideSoftInput เมื่อใด แป้นพิมพ์จะปรากฏขึ้นโดยอัตโนมัติหลังจาก onCreate และ onResume
ahmet emrah

2

สิ่งเดียวที่คุณต้องทำคือเพิ่มandroid:focusableInTouchMode="false"EditText ใน xml และนั่นคือทั้งหมด (หากยังมีคนต้องการทราบวิธีทำด้วยวิธีง่ายๆ)


2

ฉันมีปัญหาเดียวกันและฉันเพิ่งจัดการกับโฟกัสได้ในไฟล์ XML

<EditText
            android:cursorVisible="false"
            android:id="@+id/edit"
            android:focusable="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

คุณอาจกำลังมองหาความปลอดภัยด้วย สิ่งนี้จะช่วยในเรื่องนั้นด้วย


1

ใช้รหัสต่อไปนี้ในonCreate()วิธีของคุณ-

    editText = (EditText) findViewById(R.id.editText);
    editText.requestFocus();
    editText.postDelayed(new Runnable() {
        public void run() {
            InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            keyboard.hideSoftInputFromWindow(
                    editText.getWindowToken(), 0);
        }
    }, 200);

1

สำหรับผู้ใช้ Xamarin:

[Activity(MainLauncher = true, 
        ScreenOrientation = ScreenOrientation.Portrait, 
        WindowSoftInputMode = SoftInput.StateHidden)] //SoftInput.StateHidden - disables keyboard autopop

1
       <TextView android:layout_width="match_parent"
                 android:layout_height="wrap_content"

                 android:focusable="true"
                 android:focusableInTouchMode="true">

                <requestFocus/>
      </TextView>

      <EditText android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

1

หากคุณใช้ Xamarin คุณสามารถเพิ่มสิ่งนี้ได้

Activity[(WindowSoftInputMode = SoftInput.StateAlwaysHidden)]

หลังจากนั้นคุณสามารถเพิ่มบรรทัดนี้ในเมธอด OnCreate ()

youredittext.ShowSoftInputOnFocus = false;

หากอุปกรณ์เป้าหมายไม่รองรับโค้ดด้านบนคุณสามารถใช้โค้ดด้านล่างในเหตุการณ์คลิก EditText

InputMethodManager Imm = (InputMethodManager)this.GetSystemService(Context.InputMethodService);
Imm.HideSoftInputFromWindow(youredittext.WindowToken, HideSoftInputFlags.None);

1

ฉันพบว่ารูปแบบต่อไปนี้ทำงานได้ดีสำหรับฉันในโค้ดที่ฉันต้องการแสดงกล่องโต้ตอบเพื่อรับอินพุต (เช่นสตริงที่แสดงในช่องข้อความเป็นผลมาจากการเลือกที่ทำจากรายการช่องทำเครื่องหมายในกล่องโต้ตอบแทนที่จะเป็น ข้อความที่ป้อนผ่านแป้นพิมพ์)

  1. ปิดใช้งานซอฟต์อินพุตโฟกัสในช่องแก้ไข ฉันไม่สามารถปิดใช้งานสำหรับกิจกรรมทั้งหมดได้เนื่องจากมีช่องแก้ไขที่ฉันต้องการให้ใช้แป้นพิมพ์ในรูปแบบเดียวกัน
  2. การคลิกเริ่มต้นในช่องข้อความทำให้เกิดการเปลี่ยนแปลงโฟกัสการคลิกซ้ำจะทำให้เกิดเหตุการณ์การคลิก ดังนั้นฉันจึงลบล้างทั้งสองอย่าง (ที่นี่ฉันไม่ได้ refactor รหัสออกมาเพื่อแสดงให้เห็นว่าตัวจัดการทั้งสองทำสิ่งเดียวกัน):

    tx = (TextView) m_activity.findViewById(R.id.allergymeds);
    if (tx != null) {
        tx.setShowSoftInputOnFocus(false);
        tx.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if (hasFocus) {
                    MedicationsListDialogFragment mld = new MedicationsListDialogFragment();
                    mld.setPatientId(m_sess.getActivePatientId());
                    mld.show(getFragmentManager(), "Allergy Medications Dialog");
                }
            }
        });
        tx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MedicationsListDialogFragment mld = new MedicationsListDialogFragment();
                mld.setPatientId(m_sess.getActivePatientId());
                mld.show(getFragmentManager(), "Allergy Medications Dialog");
            }
        });
    }
    

0

ในแอป Android ที่ฉันกำลังสร้างฉันมีสามEditTextวินาทีLinearLayoutเรียงกันในแนวนอน ฉันต้องป้องกันไม่ให้แป้นพิมพ์อ่อนปรากฏขึ้นเมื่อโหลดชิ้นส่วน นอกจากการตั้งค่าfocusableและfocusableInTouchModeเป็นจริงLinearLayoutแล้วฉันต้องตั้งค่าdescendantFocusabilityเป็นblocksDescendants. ในonCreateผมเรียกว่าrequestFocusบนLinearLayoutบนสิ่งนี้ป้องกันไม่ให้แป้นพิมพ์ปรากฏขึ้นเมื่อสร้างส่วนย่อย

เค้าโครง -

    <LinearLayout
       android:id="@+id/text_selector_container"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:weightSum="3"
       android:orientation="horizontal"
       android:focusable="true"
       android:focusableInTouchMode="true"
       android:descendantFocusability="blocksDescendants"
       android:background="@color/black">

       <!-- EditText widgets -->

    </LinearLayout>

ในonCreate-mTextSelectorContainer.requestFocus();


0

หากใครยังมองหาวิธีแก้ปัญหาที่ง่ายที่สุดให้ตั้งค่าแอตทริบิวต์ต่อไปนี้เป็นtrueบนเค้าโครงหลักของคุณ

android:focusableInTouchMode="true"

ตัวอย่าง:

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="true">

.......
......
</android.support.constraint.ConstraintLayout>

ผู้มีสิทธิเลือกตั้งโปรดแสดงความคิดเห็นข้อโต้แย้งของคุณก่อนที่จะลงคะแนน!
Ajmal Salim

0

ใช้สิ่งนี้เพื่อเปิดและปิดใช้งาน EditText ....

InputMethodManager imm;

imm = (InputMethodManager)
getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);

if (isETEnable == true) {

    imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
    ivWalllet.setImageResource(R.drawable.checkbox_yes);
    etWalletAmount.setEnabled(true);
    etWalletAmount.requestFocus();
    isETEnable = false;
    } 
else {

    imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
    ivWalllet.setImageResource(R.drawable.checkbox_unchecked);
    etWalletAmount.setEnabled(false);
    isETEnable = true;
    }


0
private InputMethodManager imm;

...


editText.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.onTouchEvent(event);
        hideDefaultKeyboard(v);
        return true;
    }
});

private void hideDefaultKeyboard(View et) {
  getMethodManager().hideSoftInputFromWindow(et.getWindowToken(), 0);
}

private InputMethodManager getMethodManager() {
        if (this.imm == null) {
            this.imm = (InputMethodManager)  getContext().getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
        }
  return this.imm;
}

-1

สำหรับ textview ใด ๆ ในกิจกรรมของคุณ (หรือสร้าง textfiew ว่างเปล่าปลอมด้วย android: layout_width = "0dp" android: layout_height = "0dp") และเพิ่มสำหรับ textview นี้ถัดไป: android: textIsSelectable = "true"


-1

ง่ายเพียงแค่ลบแท็ก "" ออกจากไฟล์ xml


2
โปรดอธิบายรายละเอียดเกี่ยวกับเรื่องนี้และแสดงตัวอย่าง โปรดดูวิธีการตอบ
Bugs

-1

เพียงแค่ต้องเพิ่มคุณสมบัติandroid:focusable="false"โดยเฉพาะEditTextใน xml เค้าโครง จากนั้นคุณสามารถเขียนคลิกลิสต์เนอร์EditTextโดยไม่มีป๊อปอัพปุ่มกด


-1

สามารถเรียงลำดับปัญหาได้โดยใช้ไม่จำเป็นต้องตั้งค่า editText inputType เป็นค่าใด ๆ เพียงเพิ่มบรรทัดด้านล่าง editText.setTextIsSelectable (true);


สวัสดีขอบคุณที่เขียนคำตอบ! อย่างไรก็ตามเนื่องจากมีคำตอบมากมายที่นี่จึงอาจมีประโยชน์มากกว่านี้หากคุณเขียนสิ่งนี้เป็นความคิดเห็นเกี่ยวกับคำตอบของ Ranjith Kumar แทนที่จะให้เป็นคำตอบของตัวเอง นอกจากนี้ยังอาจเป็นเรื่องที่น่าสนใจที่จะพูดถึงผลของการละทิ้งสิ่งที่inputTypeจะเป็น แต่ดูเหมือนว่านี่จะเป็นการดีที่จะรู้ว่าฉันใช้คำตอบอื่นนั้นหรือไม่ดังนั้นแม้ว่าคุณจะยืนยันที่จะเก็บสิ่งนี้ไว้เป็นคำตอบของตัวเองโปรดพิจารณาแสดงความคิดเห็นที่นั่นด้วย
ทำเครื่องหมาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.