क्या किसी को पता है कि पलक झपकते कर्सर को निष्क्रिय कैसे किया जाए EditText
?
क्या किसी को पता है कि पलक झपकते कर्सर को निष्क्रिय कैसे किया जाए EditText
?
जवाबों:
आप xml विशेषता android:cursorVisible="false"
या जावा फ़ंक्शन का उपयोग कर सकते हैं setCursorVisible(false)
।
सही समाधान जो लक्ष्य तक आगे बढ़ता है
लक्ष्य: EditText
फोकस में न होने पर ब्लिंकिंग क्यूरर को अक्षम करें और फोकस में होने पर ब्लिंक करने वाले को सक्षम करें EditText
। नीचे EditText
क्लिक किए जाने पर कीबोर्ड भी खुलता है, और जब आप कीबोर्ड में प्रेस करते हैं तो उसे छुपा देते हैं।
1) अपने xml में अपने तहत सेट करें EditText
:
android:cursorVisible="false"
2) सेट onClickListener:
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);
XML का उपयोग कर कर्सर को निष्क्रिय करें
android:cursorVisible="false/true"
android:focusable="false/true"
Edit_text का चयन करने के लिए (कॉपी / कट / पेस्ट / चयन / सभी का चयन करें)
editText.setTextIsSelectable(true);
XML में टच मोड लिखने के लिए निम्न पंक्तियों पर ध्यान दें
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
।
फ़ोकस को दूसरे दृश्य में बदलें (उदा: XML में कोई भी टेक्स्टव्यू या लिनलेरेलआउट)
android:focusableInTouchMode="true"
android:focusable="true"
AddTextChangedListener को गतिविधि में Edittext पर सेट करें।
और उसके बाद Edittext put के बंद होने पर edittext.clearFocus()
;
यह कीबोर्ड के खुलने पर अक्षम हो जाएगा और कीबोर्ड बंद होने पर अक्षम हो जाएगा।
कोटलिन में your_edittext.isCursorV अदृश्य = गलत