6

我正在创建视图并将这些视图添加到 linearlayout ,这些输入来自屏幕底部的 edittext,就像一个 messanger 应用程序一样。每当我按下“完成”按钮时,它都会触发并将该消息添加到该消息线性布局中。

问题 :

当我想在这些消息之间放置 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 集中注意力并表现得像普通视图?

谢谢。

4

3 回答 3

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);
}
于 2014-02-16T13:38:51.613 回答
0

在 onCreate() 上将 adview 的可见性设置为 GONE

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

        .........

        adView.setVisibility(View.GONE)

       ..........

    }

之后,当广告加载时,将其可见性设置为 VISIBLE

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

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

希望这可以帮助 ;)

于 2016-09-28T06:58:42.573 回答
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;
        }
    });
于 2016-11-29T12:28:48.930 回答