如何使用 Android 中的 LayoutParams 方法消除重力影响? (Gravity.NO_GRAVITY 无效。)

How can I remove effect of gravity using LayoutParams method in Android? (Gravity.NO_GRAVITY doesn't work.)

由于 NO_GRAVITY,我预计 TextView 是右对齐的,但它是左对齐的。不应该 NO_GRAVITY 保持重力设置不变,而不是将其向左对齐。如果我也删除了这两行亲爱的,即使我在 android:layout_gravity="center" 中指定 android:layout_gravity="center" =27=]代码。

params.gravity = Gravity.RIGHT;
params.gravity = Gravity.NO_GRAVITY;

如何在不影响重力的情况下更改布局的其他属性? LEFTNO_GRAVITY 到底有什么区别?

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.RIGHT;
params.gravity = Gravity.NO_GRAVITY;
textView.setLayoutParams(params);

Gravity.NO_GRAVITY 可能(这只是一个猜测)意味着 "default" 重力,在您的语言环境中它是左边的,但在某些国家/地区它可能是正确的(阿拉伯语,例如,由于 writting direction).如果你想要居中对齐,那么你可以设置 Gravity.CENTER,显然...

如果你想合并两个Gravities,那么你可以使用flag add

params.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;

此外,如果您要设置 LinearLayout.LayoutParams,则 textView 的父级必须是 LinearLayout。在极少数情况下,动态布局和参数中的多个线程更改应该继续使用 requestLayout() 方法调用以强制 "redraw" 在适当的位置和线程