Gridlayout子控件里面的控件动态改变了shape颜色并设置背景,切换页面之后该控件背景显示不全
时间: 2024-02-07 17:03:42 浏览: 24
这个问题可能是由于动态设置背景后,Gridlayout子控件的大小发生了变化,但是父控件没有及时更新子控件的大小所导致的。你可以尝试在改变背景颜色后,调用Gridlayout子控件的`invalidate()`方法和`requestLayout()`方法,强制让其重新绘制和计算布局参数并更新显示。如果问题仍然存在,可以提供更多的代码和具体的场景描述,以便更好地帮助你解决问题。
示例代码如下:
```java
// 获取子控件
View child = gridLayout.getChildAt(index);
// 动态改变shape颜色
GradientDrawable drawable = (GradientDrawable) child.getBackground();
drawable.setColor(getResources().getColor(R.color.colorAccent));
// 更新子控件的背景并强制重新绘制和计算布局参数
child.setBackground(drawable);
child.invalidate();
child.requestLayout();
```
其中,`index`是Gridlayout子控件的索引,`R.color.colorAccent`是你要设置的颜色资源ID。
注意,在使用`invalidate()`方法和`requestLayout()`方法之前,需先调用`setBackground()`方法,将新的背景设置到子控件上。
如果你还有其他问题或者需要更详细的帮助,请提供更多的信息和代码,让我更好地理解你的问题。