小编典典

以编程方式更改视图的右边距?

all

可以在 Java 代码中动态更改此属性吗?

android:layout_marginRight

我有一个TextView,它必须动态地改变它向左的一些像素的位置。

如何以编程方式进行?


阅读 83

收藏
2022-07-07

共1个答案

小编典典

编辑:一种更通用的方法,它不依赖于布局类型(除了它是支持边距的布局类型):

public static void setMargins (View v, int l, int t, int r, int b) {
    if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
        ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        p.setMargins(l, t, r, b);
        v.requestLayout();
    }
}

您应该检查TextView的文档。基本上,您需要获取
TextView 的 LayoutParams 对象,并修改边距,然后将其设置回 TextView。假设它在 LinearLayout 中,请尝试以下操作:

TextView tv = (TextView)findViewById(R.id.my_text_view);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.setMargins(0, 0, 10, 0); //substitute parameters for left, top, right, bottom
tv.setLayoutParams(params);

我现在无法对其进行测试,因此我的投射可能会有所偏差,但需要修改 LayoutParams 以更改边距。

笔记

不要忘记,如果您的 TextView 在里面,例如,一个 RelativeLayout ,应该使用 _ RelativeLayout.LayoutParams_ 而不是 LinearLayout.LayoutParams

2022-07-07