কেউ কি কোনও EditText
দৃষ্টিতে ঝলক দেওয়া কার্সার অক্ষম করতে পারে তা জানেন ?
কেউ কি কোনও EditText
দৃষ্টিতে ঝলক দেওয়া কার্সার অক্ষম করতে পারে তা জানেন ?
উত্তর:
আপনি হয় এক্সএমএল বৈশিষ্ট্য android:cursorVisible="false"
বা জাভা ফাংশন ব্যবহার করতে পারেন setCursorVisible(false)
।
নিখুঁত সমাধান যা লক্ষ্য আরও এগিয়ে যায়
লক্ষ্য: 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;
}
});
আপনি প্রোগ্রামগতভাবে পাঠ্য কার্সর সম্পাদনা সক্ষম ও অক্ষম করার জন্য নিম্নলিখিত কোডগুলি ব্যবহার করতে পারেন।
কার্সার সক্ষম করতে
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()
সত্য এবং মিথ্যাতে কার্সরের দৃশ্যমানতা নির্ধারণের ক্ষেত্রে সমস্যা হতে পারে কারণ এটি কার্সারটিকে অপসারণ না করে যতক্ষণ না আপনি আবার সেট করেন এবং একই সময়ে ক্ষেত্র সম্পাদনযোগ্য হয় যা ভাল ব্যবহারকারীর অভিজ্ঞতা নয়।
পরিবর্তে ব্যবহারের পরিবর্তে
setCursorVisible(false)
ঠিক এটি করা
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
উপরের কোডটি ফোকাসটিকে সরিয়ে দেয় যা ঘুরে দাঁড়ায় কার্সারটি। এবং এটিকে আবার সক্ষম করে তোলে যাতে আপনি আবার এটি স্পর্শ করতে এবং এটি সম্পাদনা করতে সক্ষম হন। যেমন সাধারণ ব্যবহারকারীর অভিজ্ঞতা।
আমার ক্ষেত্রে, সম্পাদনাটি যখন দৃষ্টি নিবদ্ধ করা হয় তখন আমি কার্সার সক্ষম / অক্ষম করতে চেয়েছিলাম।
আপনার ক্রিয়াকলাপে:
@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);
যাতে কীবোর্ড উপস্থিত থাকে তখন কার্সারটি দৃশ্যমান হয়।
এই পংক্তিকে আপনার প্যারেন্ট লেআউটে সরল করুন
<?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>
আপনি যদি 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
।
ব্যবহার করে অন্য দর্শনে ফোকাস পরিবর্তন করুন (উদা: এক্সএমএলে কোনও পাঠ্যদর্শন বা লিনিয়ারলআউট) ব্যবহার করে
android:focusableInTouchMode="true"
android:focusable="true"
ক্রিয়াকলাপে edittext এ addTextChangedListener সেট করুন।
এবং তারপরে এডিটেক্সট পুট অফটেক্সটেক্সটেঞ্জ edittext.clearFocus()
;
কীবোর্ডটি বন্ধ থাকাকালীন কীবোর্ডটি খোলা থাকাকালীন এবং অক্ষম করা হলে এটি কার্সার সক্ষম করবে।
কোটলিনে your_edittext.isCursorVisible = মিথ্যা