Android,Admob/Adview从edittext窃取焦点,如何预防?

Sua*_*GLU 6 android focus setfocus admob adview

我正在创建视图并将这些视图添加到linearlayout,这些输入来自屏幕底部的edittext,就像一个消息应用程序.每当我按下"完成"按钮时,它会触发并将该消息添加到该消息linearlayout.

问题 :

当我想在这些消息之间放置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;

    }
Run Code Online (Sandbox Code Playgroud)

有没有可能的方法来阻止广告获得焦点并像普通视图一样行事?

谢谢.

小智 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);
}
Run Code Online (Sandbox Code Playgroud)