android - संपादितटेक्स्ट फोकस खोना नहीं है




android-edittext (3)

एक onClick श्रोता बनाएँ, संभवतः अपने XML लेआउट में पृष्ठभूमि LinearLayout में क्लिक के लिए सुनने के लिए यहां से आप कॉल कर सकते हैं। आप अपने उस गतिविधि की एक आवृत्ति चर बनाने के बाद अपने .clearFocus() पर .clearFocus()

संपादित करेंटेक्स्ट मेरे ऐप में फोकस नहीं कर रहा है जब मैं इसे से बाहर निकलता हूं, इसमें हर समय नारंगी सीमा होती है और उस काली रेखा कर्सर है .. मैं इसे एक रेखीय लयआउट के अनुसार इस संपादन के आस-पास किया था टेक्स्ट: गतिविधि को स्टार्टअप पर फ़ोकस प्राप्त करने से संपादन करें रोकें इसलिए यह ऐप की शुरुआत पर ध्यान नहीं देता ..

यह मेरा कोड है:

final EditText et = (EditText)findViewById(R.id.EditText01);

final InputMethodManager imm = (InputMethodManager) getSystemService(
   INPUT_METHOD_SERVICE);

et.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
      imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
   }
});

et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
   public void onFocusChange(View v, boolean hasfocus) {
      if(hasfocus) {
         imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
      } else {
         imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
      }
   }
});

लेकिन, जब मैं editText के बाहर कहीं भी क्लिक करता हूं, तो फ़ोकस चेंज को कॉल करना नहीं लगता है!


आप विधि को कॉल करके फ़ोकस को अन्य फ़ील्ड पर सेट करके, संपादन टेक्स्ट से फ़ोकस निकाल सकते हैं।

मान लीजिए कि मैंने बटन को बटन पर क्लिक करने के लिए वापस बटन पर फोकस सेट किया है, फिर दोबारा बटन क्लिक श्रोता के अंदर वापस बटन पर विधि को कॉल करें।

और आपकी समस्या का हल हो गया है

back.requestFocusFromTouch();

Activity.dispatchTouchEvent() डीसीपैचटूएवेंट Activity.dispatchTouchEvent() ओवरराइड करें:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        View view = getCurrentFocus();
        if (view != null && view instanceof EditText) {
            Rect r = new Rect();
            view.getGlobalVisibleRect(r);
            int rawX = (int)ev.getRawX();
            int rawY = (int)ev.getRawY();
            if (!r.contains(rawX, rawY)) {
                view.clearFocus();
            }
        }
    }
    return super.dispatchTouchEvent(ev);
}

इस तरह, जब भी कोई भी कहीं भी क्लिक करता है, आपके पास नियंत्रण होता है, और यह कोड में केवल एक बिंदु पर होता है





android-edittext