2013-02-03 9 views
6

मैं विचार बना रहा हूं और इन विचारों को एक लाइनरलेआउट में जोड़ रहा हूं, ये इनपुट स्क्रीन के निचले हिस्से में एक मैसेन्जर एप्लिकेशन की तरह संपादन से लिया गया है। जब भी मैं 'किया' बटन दबाता हूं तो यह ट्रिगर्स करता है और उस संदेश को उस संदेश पंक्ति में जोड़ता है।एंड्रॉइड, एडमोब/एडव्यू लेता है | edittext से फोकस चुराता है, कैसे रोकें?

समस्या:

जब मैं जैसे उन संदेशों के बीच adview रखना चाहते हैं हर 10 संदेश के बीच। Edittext फोकस खो रहा है और जो पूरे लेआउट को नीचे स्क्रॉल करने का कारण बनता है।

जो मैं चाहता:

Edittext फोकस खोना नहीं चाहिए और हर यह कीबोर्ड खुला के साथ निवेश के लिए सक्रिय प्रतीक्षा होना चाहिए।

मैं क्या करने की कोशिश की और काम नहीं किया:

if (messageCounter % 10 == 0) { 

     LinearLayout advertisedMessageLayout = new LinearLayout(this); 
     advertisedMessageLayout.setOrientation(LinearLayout.VERTICAL); 
     advertisedMessageLayout.setLayoutParams(new LayoutParams(
       LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

     AdView av = new AdView(this, AdSize.BANNER, MBConstants.ADVIEW_ID); 
     //remove focus for every child of adview 
     for (int i = 0; i < av.getChildCount(); i++) { 
      av.getChildAt(i).setFocusable(false); 
      av.getChildAt(i).setFocusableInTouchMode(false); 
      av.getChildAt(i).setClickable(false); 

     } 
     av.setFocusable(false); 
     av.setFocusableInTouchMode(false); 
     av.setClickable(false); 
     av.setEnabled(false); 

     AdRequest request = new AdRequest(); 
     av.loadAd(request); 

     advertisedMessageLayout.addView(messageRow); 
     advertisedMessageLayout.addView(av); 


     return advertisedMessageLayout; 

    } 

वहाँ फोकस लेने के लिए और एक सामान्य दृश्य की तरह व्यवहार करने के लिए adview को रोकने के लिए किसी भी संभव तरीका है?

धन्यवाद।

+0

बटन पर संदेशों को जोड़ने के बाद EditText.requestFocus() कॉल करने के लिए कोशिश से स्पष्ट ध्यान केंद्रित करने से फोकस निकालने के लिए क्लिक करें –

+0

क्षमा करें, मैं इसका जिक्र करना भूल जाओ, मैंने उस संपादन पर ध्यान देने का भी प्रयास किया है, लेकिन हर बार फोकस लेने के लिए विज्ञापन बहुत लालची लगता है! –

उत्तर

0

उस समस्या को हल करने के लिए आपको अपने विज्ञापन दृश्य लेआउट पैरा को ऑनलोडेड ईवेंट में सेट करने की आवश्यकता है।

@Override 
public void onAdLoaded() { 
    super.onAdLoaded(); 
    LinearLayout.LayoutParams lay = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    adView.setLayoutParams(lay); 
} 
0

onCreate पर() चला गया

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ......... 

     adView.setVisibility(View.GONE) 

     .......... 

    } 

उसके बाद करने के लिए adview की दृश्यता सेट जब विज्ञापन भरी हुई है दिखाई

adView.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 

      adView.setVisibility(View.VISIBLE) 
     } 
    }); 

आशा इस मदद करता है करने के लिए उसकी दृश्यता सेट;)

0

Admob WebView इस तरह की स्थितियों में केंद्रित है। बैनर देखने के लिए, गतिविधि या पास नरम कुंजीपटल

etAddNote.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE) {   
       activity.getCurrentFocus().clearFocus(); 

       return true; 
      } 
      return false; 
     } 
    }); 

या करीबी नरम कुंजीपटल

etAddNote.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 
       View view = activity.getCurrentFocus(); 
       if (view != null) { 
        InputMethodManager imm = (InputMethodManager) activity 
          .getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
       } 
       return true; 
      } 
      return false; 
     } 
    }); 
संबंधित मुद्दे