Android 以编程方式设置布局边距,而不更新布局边距

Android 以编程方式设置布局边距,而不更新布局边距,android,layout,view,margins,Android,Layout,View,Margins,因此,我编写了一段代码,以编程方式调整视图的边距,从而移动画布,使尺寸与背景图像匹配。但是更改边距后,画布关联的视图不会重新定位 在我看来: if (getLayoutParams() instanceof ViewGroup.MarginLayoutParams){ ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) getLayoutParams(); params.setMargins(

因此,我编写了一段代码,以编程方式调整视图的边距,从而移动画布,使尺寸与背景图像匹配。但是更改边距后,画布关联的视图不会重新定位

在我看来:

if (getLayoutParams() instanceof ViewGroup.MarginLayoutParams){ 
    ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) getLayoutParams();
    params.setMargins(translateX, translateY, 0, 0);
    setLayoutParams(params);
    parentViewGroup.requestApplyInsets();
    parentViewGroup.requestLayout();
    requestLayout();
}

不确定还要尝试什么。

您将布局参数设置为什么?这是自定义视图吗?是的,只是扩展视图,这在onSizeChanged覆盖中被调用。代码也被调用了,也就是layoutParams是instanceoftranslatex和translateY的值是多少?把一个日志放在那里,检查translatex是99。如果有区别的话,视图是在片段中创建的。我认为您必须在视图类之外,在您使用视图的地方进行创建。。。。。