2013-02-03 50 views
6

我正在创建视图并将这些视图添加到线性布局,这些输入来自屏幕底部的edittext,就像一个信使应用程序。每当我推动'完成'按钮,它会触发并将该消息添加到该消息linearlayout。Android,Admob/Adview需要|通过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; 

    } 

是否有任何可能的方式来阻止AD浏览采取集中和行为像一个正常的看法?

谢谢。

+0

尝试添加的按钮的消息后打电话到EditText.requestFocus()移除焦点单击 –

+0

对不起,我忘了提及这一点,我也试图请求关注该编辑文本,但adview似乎非常贪婪,每次都需要关注焦点! –

回答

0

要解决该问题,您需要在onAdLoaded事件中设置AdView布局参数。

@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()设置AD浏览的知名度,GONE

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

     ......... 

     adView.setVisibility(View.GONE) 

     .......... 

    } 

后,当加载广告的可见性设置为可见

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