W/View: requestLayout() improperly called by 布局GridView,一直疯狂刷新日志,导致item条目点击无效

本文解决了一个常见的Android开发问题,即GridView在布局过程中调用requestLayout()导致的错误。通过设置gridView.setFocusable(false),成功避免了焦点获取问题,解决了布局异常。

报错:

requestLayout() improperly called by android.widget.GridView{} during second layout pass: posting in next frame

requestLayout() improperly called by android.widget.GridView{} during layout: running second layout pass

解决方法:

不让GridView获取焦点就行了。gridView.setFocusable(false)。

真是感谢大佬,这个bug简直恶心,恶心心!!!!!!!

改了半天。。。网上说的GridView   gv

用以下改法,是有道理的,可能别人能用,不过我无效

gv.setVisibility(View.GONE);
gv.setVisibility(View.VISIBLE);

我看了一下log  W/View: requestLayout() improperly called by android.widget.GridView

就是获取焦点的问题,我删了几个无用的控件,还是没用,最终用开头的办法解决了。如果还有别的情况用的别的方法,也可以分享下哦~

谢谢大家,头发可以减少脱落又,开森~

 

 


原文:https://blog.youkuaiyun.com/zhl101020/article/details/78327577 
 

Android 中,父 View 调用 `requestLayout` 方法通常不会直接刷新View 的 `layoutDirection`。 `requestLayout` 方法的主要作用是标记当前 View 及其父 View 需要重新进行布局计算。当一个 View 调用 `requestLayout` 时,会触发一系列的布局流程,从该 View 开始向上遍历到根 View,然后再从根 View 开始向下重新进行测量(measure)和布局layout)操作。这个过程主要是为了调整 View 的大小和位置,以适应可能发生的变化,比如 View 的宽高属性改变等。 而 `layoutDirection` 是用来表示 View布局方向的属性,它通常与文本的显示方向、布局的对齐方式等相关。`layoutDirection` 的改变一般是由系统的语言设置、布局方向设置或者调用 `setLayoutDirection` 方法来触发的,而不是通过父 View 调用 `requestLayout` 方法。 以下是一个简单的代码示例,展示了 `requestLayout` 和 `setLayoutDirection` 的使用: ```java import android.os.Bundle; import android.view.View; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取父 View View parentView = findViewById(R.id.parent_view); // 获取子 View View childView = findViewById(R.id.child_view); // 父 View 调用 requestLayout parentView.requestLayout(); // 设置子 ViewlayoutDirection childView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值