WJ我的Android问题笔记

本文记录了两个Android开发中遇到的问题:如何让LinearLayout中的EditText填充全屏,以及LoadMultipleRootFragment加载WebView时出现的白屏bug。在LinearLayout中,设置EditText权重时宽度应为0dp以避免无效的宽度计算。对于WebView白屏问题,原因在于隐藏的Fragment宽高为0,导致网页无法正确绘制。解决方案包括调整H5网页处理宽高、在Native端使用showHideFragment切换或避免使用loadMultipalRootFragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.LinearLayout让输入框充满整个屏幕宽度

<EditText
    android:layout_weight="1"
    android:layout_width="0dp"
    ... />

为了提升布局的效率,在设置权重时,应该把 EditText 的宽度设为 0dp。如果设置宽度为 “wrap_content”,系统需要计算这个部件所占用的宽度;而此时的 EditText 因为设置了权重,所以会占据剩余空间;所以,最终导致的结果是:EditText 的宽度成了不起作用的属性(细节:节省系统资源)

2.LoadMultipleRootFragment加载WebView白屏bug问题

loadMultipleRootFragment(R.id.rootView, 0, loadingFragment,webFragment)
  • 介绍:

有两个页面,一个Loading加载页面,一个webView网页。

  • 预期场景:

先显示loading加载页,webFragment静默加载结束,使用showHideFragment切换到webFragment显示网页。

  • 实际场景:

切换到webFragment之后显示白屏。
问题定位:使用loadMultipalRootFragment方法add的Fragment,如果该Fragment不是showPosition对应的显示页,则该Fragment会在add之后接着调用hide方法隐藏,此时该Fragment的宽高为0,如果该Fragment为网页WebView的容器,而该webView要load的网页又需要根据控件宽高绘制页面,那么这时由于Fragment宽高为0,就会因无法获取有效宽高而网页白屏。
.

  • 解决方案:
    1.H5网页端取消宽高获取或对获取到的宽高数据做相应的判定处理。
    2.Native端,在loadMultipalRootFragment后用showHideFragment切换显示。

    loadMultipalRootFragment(R.id.rootView, 1, loadingFragment, webFragment)
    showHideFragment(loadingFragment, webFragment)
    

    loadMultipleRootFragment(R.id.rootView, 0, loadingFragment,webFragment)
    showHideFragment(webFragment, loadingFragment)
    showHideFragment(loadingFragment, webFragment)
    

3.不使用loadMultipalRootFragment。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值