มีการเน้นข้อความแก้ไขของฉันหรือไม่

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


person Kanth    schedule 03.09.2012    source แหล่งที่มา


คำตอบ (2)


คุณต้องโทร textView.requestFocus() เมื่อคลิกด้วยวิธีนี้ editText ของคุณจึงสามารถไฮไลต์

อย่าลืมเพิ่ม ไฟล์ XML แอตทริบิวต์นี้ android:focusableInTouchMode="true" ไปยัง EditText ของคุณด้วย

person Tomer Mor    schedule 03.09.2012
comment
ขอบคุณสำหรับการตอบกลับของคุณ แต่นี่ก็ไม่ได้ผลเช่นกัน ฉันได้สร้างข้อความแก้ไขแบบไดนามิก ดังนั้นเมื่อฉันเพิ่ม setFocusableInTouchMode(true) ซอฟต์คีย์แพดจะปรากฏขึ้น และเมื่อฉันเพิ่ม requestFocus ก็ไม่มีอะไรแตกต่างเช่นกัน - person Kanth; 04.09.2012

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

    //disable keypad
    et.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            int inType = et.getInputType(); // backup the input type
            et.setInputType(InputType.TYPE_NULL); // disable soft input
            et.onTouchEvent(event); // call native handler
            et.setInputType(inType); // restore input type
            et.requestFocus(); // request focus
            return  true; // consume touch even
        }
        });
person Georg    schedule 03.09.2012
comment
ขอบคุณที่สละเวลา. แต่มันก็ไม่ได้ผลเช่นกันในกรณีของฉัน จริงๆ แล้วมีคำถามมากมายที่ยังไม่มีคำตอบ หรือคำตอบสำหรับบางคำถามก็คลุมเครือ เช่น softkeypad ไฟล์ R.java หายไป เป็นต้น - person Kanth; 04.09.2012
comment
อะไรที่ไม่ได้ผล? แป้นพิมพ์ปรากฏขึ้นหรือคุณไม่มีเคอร์เซอร์? - person Georg; 04.09.2012