在Android上使用setMarginEnd和setMarginStart时出现问题

在Android上使用setMarginEnd和setMarginStart时出现问题,android,layout,android-5.0-lollipop,Android,Layout,Android 5.0 Lollipop,我正试图通过代码设置一些边距。然而,我在设置开始和结束边距时遇到了麻烦。出于奇怪的原因,使用setMarginStart和setMarginEnd方法不会修改视图的左右边距。我正在附加我正在使用的代码: RelativeLayout.MarginLayoutParams params = (RelativeLayout.MarginLayoutParams) loopMainLayout.getLayoutParams(); float fabRadius = context.

我正试图通过代码设置一些边距。然而,我在设置开始和结束边距时遇到了麻烦。出于奇怪的原因,使用setMarginStart和setMarginEnd方法不会修改视图的左右边距。我正在附加我正在使用的代码:

    RelativeLayout.MarginLayoutParams  params = (RelativeLayout.MarginLayoutParams) loopMainLayout.getLayoutParams();
    float fabRadius = context.getResources().getDimension(R.dimen.fab_size) / 2;
    params.bottomMargin = (int) (params.bottomMargin + fabRadius);
    params.topMargin = (int) (params.topMargin + fabRadius);
    params.setMarginEnd(params.getMarginEnd() + (int) fabRadius);
    params.setMarginStart(params.getMarginStart() + (int) 
    loopMainLayout.setLayoutParams(
为了让布局计算结束和开始边距,我是否错过了任何类型的函数调用


注意:如果我使用params.leftMargin和params.righmargin,一切都会正常工作。但我正试图将结束和结束页边距用作最佳实践。

我打赌您的目标API级别低于17,也就是添加开始页边距和结束页边距的时候。在这种情况下,您可能需要查看一下,看看它是否解决了您的问题。

setmargintart/End在Android清单中将“supportRtl”设置为false时似乎没有任何效果。可能是这样

派对有点晚了,但我找到了一个有效的解决方案,适合像我这样偶然发现这个问题的人。您需要调用
setLayoutParams(LayoutParams)
返回视图,并根据源代码中的文档更新参数(查找
MarginLayoutParams.startMargin | endMargin

不是这样,应用程序的目标是“L”预览,因此,除非这是一个已知错误,否则我认为问题与API级别无关。您是否尝试使用我链接的兼容方法?你测试应用程序的API级别是什么?是的,已经尝试过了,但没有成功。我现在的目标是我的预览版。嘿,我也有同样的问题。我正在用API 22运行测试。设置params.rightMargin是可行的,但params.setMarginEnd()没有任何作用。你有没有理解这一点?一点也没有。。。我的猜测是,边距开始和结束仅在创建时使用,因此您必须坚持设置边距的旧方法。。。