Webview在android 5中出现,但在2.3中没有?

Webview在android 5中出现,但在2.3中没有?,android,view,webview,Android,View,Webview,我的日志中唯一的警告是: webcore:无法获取第一次布局后的视图宽度。 我的应用程序中有一个使用webview的广告横幅,它是通过编程方式添加的。它出现在Android版本5中,但不在Android 2.3中。我测试了XML而不是java,搜索了许多其他涉及相同错误的帖子,但没有一篇解决了我的问题! 该日志不是来自代码中的堆栈跟踪。它来自Banner类,该类已锁定,我无权访问它。我真的很沮丧。我看过很多关于这个问题的帖子,没有一篇适合我的情况。救命啊 public class Users e

我的日志中唯一的警告是:

webcore:无法获取第一次布局后的视图宽度。

我的应用程序中有一个使用webview的广告横幅,它是通过编程方式添加的。它出现在Android版本5中,但不在Android 2.3中。我测试了XML而不是java,搜索了许多其他涉及相同错误的帖子,但没有一篇解决了我的问题! 该日志不是来自代码中的堆栈跟踪。它来自Banner类,该类已锁定,我无权访问它。我真的很沮丧。我看过很多关于这个问题的帖子,没有一篇适合我的情况。救命啊

public class Users extends Activity{

static boolean showAd = true;   

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.users);
    try{
        if (showAd)
            showBanner();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


 private void showBanner(){
   try {
       Banner banner = new Banner(this);
       LinearLayout layout = (LinearLayout) findViewById(R.id.users);
       layout.addView(banner);
   } catch (Exception e){e.printStackTrace();}
}

}

尝试按如下方式添加您的横幅:

LinearLayout layout = (LinearLayout) findViewById(R.id.users);
layout.addView (banner, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
layout.requestlayout();
public class BannerSample extends Activity {
@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
AdView adview = (AdView)findViewById(R.id.add_view);      
AdRequest re = new AdRequest();               
adview.loadAd(re);  
}
我检查了Android的源代码,在updateViewport方法的第1960行发现了错误

在以下情况下记录该消息:

if (viewportWidth == 0) {
                Log.w(LOGTAG, "Can't get the viewWidth after the first layout");
            }
视口宽度的计算如下所示:

webViewWidth = mWebView.getViewWidth();

因此,在您的情况下,webview宽度似乎设置为零,我建议仔细检查布局xml文件,以确保webview及其父视图组维度设置正确。

您可以在android中使用AdBanner,如下所示:

LinearLayout layout = (LinearLayout) findViewById(R.id.users);
layout.addView (banner, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
layout.requestlayout();
public class BannerSample extends Activity {
@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
AdView adview = (AdView)findViewById(R.id.add_view);      
AdRequest re = new AdRequest();               
adview.loadAd(re);  
}
在XML中定义adview:

<com.google.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res/com.flash.light"
    android:id="@+id/add_view"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="XXXXXXXXX"/>

我已经用过了。不适合我。同样的警告,没有结果:(请显示您的完整代码,以便我们进行调试。@Sarax我使用的代码正是上述代码。我从onCreate()调用showBanner,它开始工作。我所做的就是这样!但该库是一个修改过的google ads库,并且被锁定。当我尝试打开库中的任何类时,它会显示“未找到源代码”消息!所以没有希望了?@CrazyAndroidI的意思是整个类文件@saraXI都这么做了,但是同样的警告,在第一次布局后无法获得viewWidth:(还是一样。我应该哭吗?:(.这些代码在含有棒棒糖的Galaxy note 3上有效,但在含有姜饼的xperia ray上无效。这难道没有任何线索吗?我再次检查,没有发现任何错误!因此我设法为xperia ray找到了一个新的ICS rom并刷新了该rom,因此设备更新为ICS。我再次测试了该应用程序,这次,广告横幅发挥了巨大的作用!现在我确信它是正确的。)android版本2.3的问题:(