আমি কীভাবে একটি Android সম্পাদনা ভিউ 'সম্পন্ন' বোতামটি তৈরি করব এবং ক্লিক করার সময় কীবোর্ডটি আড়াল করব?


115

ব্যবহারকারী যখন ক্লিক করে EditView, অ্যান্ড্রয়েড কীবোর্ডটি খুলবে যাতে ব্যবহারকারী লিখতে পারেন EditView

সমস্যাটি হ'ল, যখন ব্যবহারকারী লেখার কাজ শেষ করেন, কীবোর্ডটি আড়াল করার কোনও উপায় নেই। কীবোর্ডটি লুকানোর জন্য ব্যবহারকারীকে পিছনের বোতামটি টিপতে হবে।

Doneকিবোর্ডে এমন কোনও বোতাম প্রদর্শন করার কোনও উপায় রয়েছে যা কীবোর্ডটি আড়াল করবে?


উত্তর:


139

ব্যবহারের TextView.setImeOptions এবং এটি actionDone পাস। মতtextView.setImeOptions(EditorInfo.IME_ACTION_DONE);


8
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
সোলাই

14
textView.singleLine(true)প্রোগ্রামযুক্তভাবে এটি কাজ করতে আমাকে যুক্ত করতে হয়েছিল।
জ্যাকসনকর

তবে এটি অ্যান্ড্রয়েড ২.৩ থেকে
সুমিত কুমার সাহা

148

প্রথমে আপনাকে নীচের মত দেখতে আপনার টার্গেট এডিটেক্সট এর android:imeOptionsসমান গুণাবলী নির্ধারণ করতে হবে actionDone। এটি আপনার সম্পাদনা পাঠ্য সফ্ট কীবোর্ডের আপনার 'রিটার্ন' বোতামটি 'ডোন' বোতামে পরিবর্তন করবে।

<EditText 
    android:id="@+id/edittext_done"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Enter some text"
    android:imeOptions="actionDone"
    />

@ মিশেল সেই লিঙ্কটি সরিয়ে দিয়েছে। ধন্যবাদ
পরেশ মায়ানী

19
এটি android:singleLine="true"এক্সএমএল
জ্যাকসনক্রার

4
অ্যান্ড্রয়েড: সিঙ্গললাইন হ্রাস করা হয়। অ্যান্ড্রয়েড ব্যবহার করুন: ম্যাক্সলাইনস = "1"।
FariborZ

হ্যাঁ @ ফরিবর্জেড সিঙ্গললাইন এখন অবচয় করা হয়েছে।
পরেশ মায়ানী

1
গুরুত্বপূর্ণ দ্রষ্টব্য: সিঙ্গললাইন ম্যাক্সলাইনগুলির মতো নয়। এই ভুল ধারণাটি সবার জন্য প্রচুর সমস্যার কারণ হয়ে দাঁড়ায়, আমাদের সর্বত্র তা লক্ষ করা উচিত। stackoverflow.com/questions/30879471/...
milosmns

86

এবং উভয়ই অন্তর্ভুক্ত করুন :imeOptions singleLine

<EditText 
   android:id="@+id/edittext_done"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:imeOptions="actionDone"
   android:singleLine="true"
   />

35
android:imeActionLabel="Done" 
android:singleLine="true"

এক্সএমএল ফাইলটিতে ঠিক কাজ করে। তবে এটি editTextএকক লাইনে টাইপ করাও রাখতে পারে যা আপনি চান না। সুতরাং আপনার কোডটিতে নিম্নলিখিতগুলি যুক্ত করা নিশ্চিত করবে যে আপনি একক লাইনে সমস্ত কিছুই টাইপ করবেন না।

mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");

1
ধন্যবাদ, ডেমো 12 এ ছিল, সময় ছিল 11:58 এবং আপনি আমার সমস্যাটি 11:59 এ ঠিক করেছেন: পি
শাহজাইন আলি

অ্যান্ড্রয়েড: সিঙ্গললাইন = "সত্য" হ্রাস করা হয়েছে। সুতরাং, অ্যান্ড্রয়েড: লাইনগুলি = "1" ব্যবহার করুন
গোথাম। আর

20

সম্পন্ন বোতামটি পাওয়ার জন্য

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

এবং

android:inputType="text" এক্সএমএলে

কীবোর্ড থেকে ক্লিক করা সম্পন্ন হ্যান্ডলিং জন্য

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE){
                // Your action on done
                return true;
            }
            return false;
        }
    });

`


14

এটা ব্যবহার কর:

android:singleLine="true"

হ্যাঁ ... অন্যথায় কীভাবে কীবোর্ড বন্ধ করে বনাম পরের লাইনে যেতে পারছেন?
jstewart379

এটিই আমার পক্ষে কাজ করে। আমি actionDoneসেখানে থাকার সাথে ত্রুটি করার সিদ্ধান্ত নিয়েছি , কেবলমাত্র যদি কিছু ডিভাইস আলাদাভাবে প্রতিক্রিয়া দেখায়।
জ্যাকসনকর

10

আপনার এই দুটি লাইন ব্যবহার করুন EditText

android:imeActionLabel="Done"
android:singleLine="true"

বা আপনি প্রোগ্রামটিমেটিকভাবে এই লাইনের মাধ্যমে এটি অর্জন করতে পারেন।

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

7

যদি উইজেটের জন্য সম্পত্তিটি পরিবর্তন না android:imeOptions="actionDone"হয় তবে এটি লেআউট xmlফাইলের মতো ব্যবহার করা ভাল ।




5

কীবোর্ডের সেই সময়টির কীবোর্ডটি পরবর্তী বোতামে ক্লিক করার সময় অ্যাকশনডোন ব্যবহার করা হয় Text পাঠ্য সম্পাদনা বা অ্যাপকম্প্যাট সম্পাদনা ব্যবহার করুন

এক্সএমএল

1.1 আপনি যদি অ্যাপকম্প্যাটএডিটেক্সট ব্যবহার করেন

    <android.support.v7.widget.AppCompatEditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionDone"/>

১.২ আপনি যদি এডিটেক্সট ব্যবহার করেন

    <EditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionDone"/>

জাভা

EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);

5

আমার উল্লেখ করতে হবে যে সমস্যাটি না জেনে অনেক লোক এতে লড়াই করতে পারে।

যখন এ ক্লিক করলে আপনার লুকিয়ে রাখবেন তা KB চান Done, এবং আপনি সেট android:imeOptions="actionDone"& android:maxLines="1" ছাড়া আপনার editText সেটিং inputTypeএটা করবে না ডিফল্ট হিসাবে কাজ inputTypeeditText জন্য নয় "text"যেমন মানুষ অনেক মনে করি।

তাই হয়, শুধুমাত্র সেটিং inputTypeআপনি ফলাফল আপনি ইচ্ছা দেব যাই হোক না কেন কি আপনি এটা পছন্দ সেটিং করা হয় "text", "number"... ইত্যাদি।


2

আসলে আপনি সেই ছোট্ট নীল বোতামে কাস্টম পাঠ্য সেট করতে পারেন। এক্সএমএল ফাইলটিতে কেবল ব্যবহার করুন

android:imeActionLabel="whatever"

আপনার সম্পাদনা পাঠ্য

অথবা জাভা ফাইল ব্যবহার করুন

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);

এই ফাংশনের জন্য দ্বিতীয় প্যারামিটারে কী হওয়া উচিত তার উদাহরণ হিসাবে আমি নির্বিচারে IME_ACTION_DONE নির্বাচন করি । এই ক্রিয়াগুলির একটি সম্পূর্ণ তালিকা এখানে পাওয়া যাবে

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


2

কোটলিন সলিউশন

কোটলিনে হাইড কীবোর্ড + সম্পন্ন ক্রিয়াটি হ্যান্ডেল করার সরাসরি উপায় হ'ল:

// Set action
edittext.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        // Hide Keyboard
        val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
        true
    }
    false
}

কোটলিন এক্সটেনশন

edittext.onDone {/*action*/}আপনার মূল কোডটিতে কল করতে এটি ব্যবহার করুন । এটি আরও পঠনযোগ্য এবং রক্ষণাবেক্ষণযোগ্য রাখে

edittext.onDone { edittext.hideKeyboard() }

fun View.hideKeyboard() {
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

fun EditText.onDone(callback: () -> Unit) {
    // These lines optional if you don't want to set in Xml
    imeOptions = EditorInfo.IME_ACTION_DONE
    maxLines = 1
    setOnEditorActionListener { _, actionId, _ ->
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            callback.invoke()
            true
        }
        false
    }
}

অতিরিক্ত কীবোর্ড এক্সটেনশনগুলি

আপনি যদি কীবোর্ডের সাথে কাজটি আরও সহজ করার আরও উপায় চান (শো, বন্ধ, ফোকাস): এই পোস্টটি পড়ুন

কোডে না থাকলে আপনার এডিটেক্সট এক্সএমএলে এই বিকল্পগুলি যুক্ত করতে ভুলবেন না

<EditText ...
    android:imeOptions="actionDone"
    android:inputType="text"/>

inputType="textMultiLine"সমর্থন দরকার ? এই পোস্টটি পড়ুন এবং এক্সএমএল imeOptionsবা যুক্ত করবেন নাinputType



0

আপনি যদি ব্যবহার করছেন

android:imeOptions="actionDone" 

তারপরে আপনাকে অবশ্যই ব্যবহার করা উচিত

android:inputType="text"

তবে কেবলমাত্র আপনি কীবোর্ডে অ্যাকশন সম্পন্ন বোতামটি দেখতে পাবেন।


0

আপনি যদি কোনও বোতাম না চান তবে (উদাহরণস্বরূপ আপনি অন্ধ লোকদের জন্য জিইউআই তৈরি করছেন যেখানে ট্যাপটি অবস্থানীয় হতে পারে না এবং আপনি একক / ডাবল / দীর্ঘ ট্যাপের উপর নির্ভর করেন):

text.setItemOptions(EditorInfo.IME_ACTION_NONE)

বা কোটলিনে:

text.imeOptions = EditorInfo.IME_ACTION_NONE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.