加载WebView导致布局中其他View无法显示的问题求助
问题解决:让WebView与TextView同时显示
我一眼就揪出问题所在了!你在onCreate方法里调用了两次setContentView,第二次直接把WebView单独设置成了整个界面的内容——相当于你先加载了包含TextView的完整布局,随后又把整个界面替换成了只有WebView的状态,TextView自然就被覆盖消失了。
修正后的SomeActivity.java代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 只需要调用一次,加载包含WebView和TextView的完整布局 setContentView(R.layout.activity_profiling_result); // 直接从布局中获取已存在的WebView实例 WebView webView = findViewById(R.id.temp_web_view); // 配置WebView并加载目标URL webView.getSettings().setJavaScriptEnabled(true); String WEB_URL = "https://www.google.ca/"; webView.loadUrl(WEB_URL); }
为什么原来的代码会失效?
- 你一开始正确加载了
activity_profiling_result.xml布局,但随后执行的((ViewGroup)webView.getParent()).removeView(webView)和setContentView(webView),相当于把WebView从原布局中剥离,然后让它独占整个界面,原本的TextView就被彻底丢弃了。 - 你的XML布局本身完全符合需求:RelativeLayout中WebView固定高度300dp,TextView通过
android:layout_alignParentBottom="true"固定在底部,只要正常加载这个布局就能实现预期效果。
确认XML布局无需修改
你的activity_profiling_result.xml完全没问题,保持原样即可:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/temp_web_view" android:layout_width="match_parent" android:layout_height="300dp" /> <TextView android:id="@+id/temp_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Test Text" /> </RelativeLayout>
修改后运行,WebView会显示在顶部300dp高度的区域,TextView固定在屏幕底部,两者就能同时正常显示啦!
内容的提问来源于stack exchange,提问作者Noma Citzen
相关产品推荐
相关产品推荐

