এডিট টেক্সট ব্লিঙ্কিং কার্সার অক্ষম করুন


উত্তর:


354

আপনি হয় এক্সএমএল বৈশিষ্ট্য android:cursorVisible="false"বা জাভা ফাংশন ব্যবহার করতে পারেন setCursorVisible(false)


13
আশ্চর্যজনক, এটি অনক্লিক্লিসটেনারের সাথে একসাথে এটি দৃশ্যমান করে তোলে যা সঠিক আচরণ দেয় :)
ওয়ারপজিট

1
@cerin নীল চিহ্নিতকারীকে আড়াল করার একটি উপায় আছে যাতে আমি পেস্টটি অক্ষম করতে পারি, তবে কার্সারটি দৃশ্যমান রাখুন যাতে ব্যবহারকারী দেখতে পাবে যে তিনি মাঠে কোথায় আছেন?
লিমলিম

9
কেবল ঝলকানো নিজেই অক্ষম করা সম্ভব, এবং কার্সারটি নয়?
অ্যান্ড্রয়েড বিকাশকারী

35

নিখুঁত সমাধান যা লক্ষ্য আরও এগিয়ে যায়

লক্ষ্য: EditTextফোকাসে না থাকলে ঝলক দেওয়া কার্সারটি অক্ষম করুন এবং ফোকাসে থাকা অবস্থায় ঝলকানো কার্সার সক্ষম করুন EditText। নীচে EditTextক্লিক করার সময় কীবোর্ডটিও খোলে এবং কীবোর্ডে করা টিপলে এটি লুকিয়ে রাখে।

1) আপনার এক্সএমএল এর নীচে সেট করুন EditText:

android:cursorVisible="false"

2) ক্লিকলিস্টেনার সেট করুন:

iEditText.setOnClickListener(editTextClickListener);

OnClickListener editTextClickListener = new OnClickListener() 

{

    public void onClick(View v) 
    {
         if (v.getId() == iEditText.getId()) 
        {
            iEditText.setCursorVisible(true);
        }

    }
};

3) তারপরে onCreate, ইভেন্টটি ক্যাপচার করুন যখন OnEditorActionListenerআপনার EditTextএবং তারপরে টিপে টিপুন setCursorVisible(false)

//onCreate...

iEditText.setOnEditorActionListener(new OnEditorActionListener() {

            @Override
            public boolean onEditorAction(TextView v, int actionId,
                    KeyEvent event) {
                    iEditText.setCursorVisible(false);
                if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                    InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    in.hideSoftInputFromWindow(iEditText.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
                }
                return false;
            }
        });

6
KeyEvent.KEYCODE_ENTER সমস্ত কীবোর্ডের জন্য কাজ করবে না। আপনার বিশেষভাবে অ্যান্ড্রয়েডের উল্লেখ করতে হবে: imeOptions = "অ্যাকশনডোন" লেআউটে এবং তারপরে EditorInfo.IME_ACTION_DONEও হ্যান্ডেল করুন।
সাইকিক

দুর্দান্ত উত্তরটি কেবলমাত্র স্পর্শের সাথে ক্লিকের পরিবর্তে হওয়া উচিত কারণ কিছু সময় ক্লিক না করেই পাঠ্য অর্জনের ফোকাস সম্পাদন করা উচিত যাতে এক্ষেত্রে কার্সারটি প্রদর্শিত হবে না
আন্তওয়ান

10

আপনি প্রোগ্রামগতভাবে পাঠ্য কার্সর সম্পাদনা সক্ষম ও অক্ষম করার জন্য নিম্নলিখিত কোডগুলি ব্যবহার করতে পারেন।

কার্সার সক্ষম করতে

    editText.requestFocus();
    editText.setCursorVisible(true);

কার্সার অক্ষম করতে

    editText.setCursorVisible(false);

এক্সএমএল ব্যবহার করে অক্ষম কর্সার সক্ষম করুন

   android:cursorVisible="false/true"
   android:focusable="false/true"

সম্পাদনা পাঠ্য বাছাইযোগ্য করতে (কপি / কাট / পেস্ট / নির্বাচন / নির্বাচন / নির্বাচন সব)

   editText.setTextIsSelectable(true);

টাচ মোডে ফোকাস করতে এক্সএমএলে নিম্নলিখিত লাইনগুলি লিখুন

  android:focusableInTouchMode="true"
  android:clickable="true"
  android:focusable="true" 

প্রোগ্রামেটিক্যালি

  editText.requestFocusFromTouch();

টাচ মোডে ফোকাস সাফ করতে

  editText.clearFocus()

editText.clearFocus () আমি যা খুঁজছিলাম। ধন্যবাদ !! +1
আইউজার

3

সত্য এবং মিথ্যাতে কার্সরের দৃশ্যমানতা নির্ধারণের ক্ষেত্রে সমস্যা হতে পারে কারণ এটি কার্সারটিকে অপসারণ না করে যতক্ষণ না আপনি আবার সেট করেন এবং একই সময়ে ক্ষেত্র সম্পাদনযোগ্য হয় যা ভাল ব্যবহারকারীর অভিজ্ঞতা নয়।

পরিবর্তে ব্যবহারের পরিবর্তে

setCursorVisible(false)

ঠিক এটি করা

        editText2.setFocusableInTouchMode(false)
        editText2.clearFocus()
        editText2.setFocusableInTouchMode(true)

উপরের কোডটি ফোকাসটিকে সরিয়ে দেয় যা ঘুরে দাঁড়ায় কার্সারটি। এবং এটিকে আবার সক্ষম করে তোলে যাতে আপনি আবার এটি স্পর্শ করতে এবং এটি সম্পাদনা করতে সক্ষম হন। যেমন সাধারণ ব্যবহারকারীর অভিজ্ঞতা।


2

আমার ক্ষেত্রে, সম্পাদনাটি যখন দৃষ্টি নিবদ্ধ করা হয় তখন আমি কার্সার সক্ষম / অক্ষম করতে চেয়েছিলাম।

আপনার ক্রিয়াকলাপে:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        View v = getCurrentFocus();
        if (v instanceof EditText) {
            EditText edit = ((EditText) v);
            Rect outR = new Rect();
            edit.getGlobalVisibleRect(outR);
            Boolean isKeyboardOpen = !outR.contains((int)ev.getRawX(), (int)ev.getRawY());
            System.out.print("Is Keyboard? " + isKeyboardOpen);
            if (isKeyboardOpen) {
                System.out.print("Entro al IF");
                edit.clearFocus();
                InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
            }

            edit.setCursorVisible(!isKeyboardOpen);

        }
    }
    return super.dispatchTouchEvent(ev);
}

খুব নিশ্চিত যে আপনি edit.setCursorVisible(!isKeyboardOpen);হতে চান edit.setCursorVisible(isKeyboardOpen);যাতে কীবোর্ড উপস্থিত থাকে তখন কার্সারটি দৃশ্যমান হয়।
ড্যানিয়েল ঝড়

2

এই পংক্তিকে আপনার প্যারেন্ট লেআউটে সরল করুন

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <EditText
        android:inputType="text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

1

আপনি যদি Edittextক্রিয়াকলাপ শুরু থেকে অগ্রাহ্য করতে চান android:focusableএবং android:focusableInTouchModeআপনাকে ইনশাল্লাহ সহায়তা করবে।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout7" android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:focusable="true" android:focusableInTouchMode="true">

এই LinearLayoutআপনার সঙ্গে Edittext


0
  1. ব্যবহার করে অন্য দর্শনে ফোকাস পরিবর্তন করুন (উদা: এক্সএমএলে কোনও পাঠ্যদর্শন বা লিনিয়ারলআউট) ব্যবহার করে

    android:focusableInTouchMode="true"
    android:focusable="true"
  2. ক্রিয়াকলাপে edittext এ addTextChangedListener সেট করুন।

  3. এবং তারপরে এডিটেক্সট পুট অফটেক্সটেক্সটেঞ্জ edittext.clearFocus();

কীবোর্ডটি বন্ধ থাকাকালীন কীবোর্ডটি খোলা থাকাকালীন এবং অক্ষম করা হলে এটি কার্সার সক্ষম করবে।


0

কোটলিনে your_edittext.isCursorVisible = মিথ্যা


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