বোতামটি ক্লিক করার পরিবর্তে সফটকিবোর্ডে "ENTER" কী ব্যবহার করুন


94

হ্যালো আমি একটি অনুসন্ধান EditTextএবং অনুসন্ধান পেয়েছি Button। আমি যখন সন্ধান করা পাঠ্যটি টাইপ করি তখন অনুসন্ধানের ক্রিয়াকলাপ সক্রিয় করার জন্য অনুসন্ধানের পরিবর্তে সফটকিবোর্ডে ENTER কী ব্যবহার করতে চাই Button

উপকারের জন্য আগাম শুভেচ্ছা.

উত্তর:


154

আপনি একটি সেটিং দ্বারা এটা করতে OnKeyListenerআপনার এর উপর EditText

এখানে আমার নিজস্ব কোড থেকে একটি নমুনা দেওয়া হয়েছে। আমার একটি EditTextনাম আছে addCourseText, যা addCourseFromTextBoxএন্টার কী বা ডি-প্যাড ক্লিক করলে ফাংশনটি কল করবে ।

addCourseText = (EditText) findViewById(R.id.clEtAddCourse);
addCourseText.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_DOWN)
        {
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_DPAD_CENTER:
                case KeyEvent.KEYCODE_ENTER:
                    addCourseFromTextBox();
                    return true;
                default:
                    break;
            }
        }
        return false;
    }
});

4
আসলে, এটি সফট কীগুলির জন্য গ্যারান্টিযুক্ত নয়। উদাহরণস্বরূপ, এটি নেক্সাস 7 (অ্যান্ড্রয়েড 4.2) এ "ENTER" এবং এটি "ব্যাক" এর পক্ষে কাজ করে না।
Ghedeon

4
@ গেডিওন আপনি android:inputType="text"সম্পাদনা পাঠ্যের জন্য এক্সএমএল সেট করতে পারেন প্রবেশের ডিফল্ট ডিফল্ট কীবোর্ড যা ক্যারেজের রিটার্ন রয়েছে তার বিপরীতে প্রবেশ কীটি দেখায়।
নিক

4
এই পদ্ধতিটি জেলিবিয়ান হিসাবে কাজ করার জন্য গ্যারান্টিযুক্ত নয়, দেখুন ডেভেলপার.অ্যান্ড্রয়েড
কনস্টান্টিন

@ জিহাদিওন কীভাবে আপনি এটি নেক্সাস 7 এ "ENTER" এর জন্য কাজ করতে পারেন?
হেয়ারআফডডগ

4
এই সমাধানটি অনেকগুলি ডিভাইসে সম্পূর্ণরূপে নষ্ট হয়ে গেছে, নেক্সাস 7 অন্তর্ভুক্ত। এটি ব্যবহার করবেন না!
স্টিভি

44
<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSend" />

তারপরে আপনি সম্পাদনা পাঠ্য উপাদানটির জন্য একটি পাঠ্য ভিউ.অনএডিটরঅ্যাকশনলিস্টনার নির্ধারণ করে ক্রিয়া বোতামে টিপুন শুনতে পারেন। আপনার শ্রোতার ক্ষেত্রে, IMIAAFF_SEND এর মতো এডিটরআইএনফো ক্লাসে সংজ্ঞায়িত যথাযথ IME ক্রিয়া আইডির প্রতিক্রিয়া জানান। উদাহরণ স্বরূপ:

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});

উত্স: https://developer.android.com/training/keyboard-input/style.html


26

আপনি নিজের এডিটেক্সট এর মতো একটি বৈশিষ্ট্য যুক্ত করতে পারেন:

android:imeOptions="actionSearch"

4
আপনি যদি কোনও অনুসন্ধান সম্পাদনা পাঠ্য তৈরি করে থাকেন তবে এটি সহজ সমাধান।
স্টিভিহ্যাকার

android:inputType="text"পাশাপাশি সেট করতে হবে
li2

6

এন্ড্রয়েডের মতো সম্পাদনা পাঠ্যে একটি বৈশিষ্ট্য যুক্ত করুন: imeOptions = "ক্রিয়া অনুসন্ধান"

এটি ফাংশনটি করার সেরা উপায়

এবং imeOptions এর আরও কিছু মান রয়েছে যেমন "যান" next "পরবর্তী" 、 "সম্পন্ন" ইত্যাদি etc.


2

আমরা কোটলিন ল্যাম্বদাও ব্যবহার করতে পারি

editText.setOnKeyListener { _, keyCode, keyEvent ->
        if (keyEvent.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            Log.d("Android view component", "Enter button was pressed")
            return@setOnKeyListener true
        }
        return@setOnKeyListener false
    }

0

পরবর্তী সম্পাদনযোগ্য ক্ষেত্রে অগ্রণী মনোযোগ এড়াতে (যদি আপনার একটি থাকে) আপনি কী-ডাউন ইভেন্টগুলি উপেক্ষা করতে চাইতে পারেন, তবে কী-আপ ইভেন্টগুলি পরিচালনা করতে পারেন। আমি কী-কোডে প্রথমে ফিল্টার করতে পছন্দ করি, ধরে নিলাম যে এটি সামান্য আরও দক্ষ হবে। যাইহোক, মনে রাখবেন যে সত্য প্রত্যাবর্তনের অর্থ আপনি ইভেন্টটি পরিচালনা করেছেন তাই অন্য কোনও শ্রোতা তা করবে না। যাইহোক, এখানে আমার সংস্করণ।

ETFind.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (keyCode ==  KeyEvent.KEYCODE_DPAD_CENTER
        || keyCode ==  KeyEvent.KEYCODE_ENTER) {

            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                // do nothing yet
            } else if (event.getAction() == KeyEvent.ACTION_UP) {
                        findForward();      
            } // is there any other option here?...

            // Regardless of what we did above,
            // we do not want to propagate the Enter key up
            // since it was our task to handle it.
            return true;

        } else {
            // it is not an Enter key - let others handle the event
            return false;
        }
    }

});

0

আমি কীভাবে পরিচালনা করব এটি আমার অ্যাপের একটি নমুনা

 //searching for the Edit Text in the view    
    final EditText myEditText =(EditText)view.findViewById(R.id.myEditText);
        myEditText.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                 if (event.getAction() == KeyEvent.ACTION_DOWN)
                      if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||
                             (keyCode == KeyEvent.KEYCODE_ENTER)) {
                                //do something
                                //true because you handle the event
                                return true;
                               }
                       return false;
                       }
        });

0

এটি অর্জনের জন্য সর্বাধিক আপডেট হওয়া উপায়:

এক্সএমএলে এটি আপনার সম্পাদনা পাঠ্যে যুক্ত করুন:

android:imeOptions="actionSearch"

তারপরে আপনার ক্রিয়াকলাপ / খণ্ডে:

EditText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
        // Do what you want here
        return@setOnEditorActionListener true
    }
    return@setOnEditorActionListener false
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.