2010-12-20 16 views
16

संपादन टेक्स्ट मेरे ऐप में फोकस नहीं कर रहा है जब मैं इसे क्लिक करता हूं, इसमें नारंगी सीमा होती है और वह काला रेखा कर्सर .. मैंने इसे संपादित करने के आसपास के आसपास एक लाइनरलाउट किया : Stop EditText from gaining focus at Activity startup तो यह .. एप्लिकेशन की शुरुआत पर ध्यान केंद्रित नहीं मिलता हैएडिटटेक्स्ट फोकस नहीं खो रहा है

इस

मेरी कोड है:

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); 
     } 
    } 
}); 

लेकिन, यह onFocusChange बुला जा करने के लिए जब मैं कहीं भी क्लिक नहीं लगता है संपादन के बाहर पाठ!

+2

मैं बहुत ज्यादा एक ही बात का सामना कर रहा हूँ। जहाँ तक मेरा बता सकते हैं, onFocusChange() उत्पन्न नहीं है जब फ़ोकस को स्पर्श घटना के माध्यम से एक EditText से दूसरे में ले जाया जाता है। शायद @ ओवरराइडिंग टच() काम कर सकता है? हाथ से नहीं पता। –

+0

समस्या यह है। अब हम 'विश्व \ {} EditText के कोड को संशोधित करने के लिए है' एक edittext काम करने के लिए मिलता है। क्या है ... – Bondax

उत्तर

1

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

+1

कोई नहीं है .cancelFocus() विधि ... –

+2

मुझे लगता है कि मेरा मतलब था '.clearFocus() ' – styler1972

15

यह आसान है। आप LinearLayout वरना किसी अन्य में निम्नलिखित रख सकते हैं:

android:focusableInTouchMode="true" 
+1

यह एक अच्छा जवाब है। मैंने इसे RelitiveLayout में उपयोग किया ताकि कोई भी संपादन टेक्स्ट हर समय ध्यान केंद्रित न कर सके। +1 – Sevren

0

आप विधि को फोन करके अन्य क्षेत्र के लिए ध्यान देने की स्थापना करके, EditText से फोकस हटा सकते हैं।

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

और आपकी समस्या को हल किया जाता है।

back.requestFocusFromTouch(); 
3

अवहेलना 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); 
} 

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

संबंधित मुद्दे