2013-02-03 7 views
6

私はビューを作成し、これらのビューを直線レイアウトに追加しています。これらの入力は、messangerアプリケーションのように画面の下部にあるedittextから取得されます。 「完了」ボタンを押すたびに、そのメッセージがトリガーされ、そのメッセージがそのメッセージの直線レイアウトに追加されます。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; 

    } 

はフォーカスを取得し、通常のビューのように動作するadviewを防ぐために、すべての可能な方法はありますか?A:私が試したと動作しませんでした何

ありがとうございました。

+0

はEditText.requestFocus(呼び出そう)ボタンの上にメッセージを追加した後に申し訳ありません –

+0

をクリックし、I私はその編集テキストにフォーカスを要求しようとしましたが、adviewは毎回フォーカスを取るように貪欲に思えます! –

答えて

0

この問題を解決するには、onAdLoadedイベントでAdViewレイアウトパラメータを設定する必要があります。 onCreateで

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

()広告がロードされたときにその後GONE

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

     ......... 

     adView.setVisibility(View.GONE) 

     .......... 

    } 

にadviewの可視性を設定しVISIBLE

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; 
     } 
    }); 
関連する問題