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的问题:(