9

如果我使用 xml 文件,我有一个名为 layout_margin 的选项(例如 layout_margin ="1dp" 用于文本视图),但我想以编程方式设置,但我不知道该怎么做。

4

8 回答 8

15
   LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)textview.getLayoutParams();
     params.setMargins(20, 0, 0, 0); 
     textview.setLayoutParams(params);
于 2012-07-16T12:52:13.647 回答
6

在将您的问题添加到 StackOverflow 之前,请先 Google 一下。

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);
于 2012-07-16T12:54:14.383 回答
3

You can do by this:

TextView text = (TextView) findViewById(R.id.text);   
LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);//pass int values for left,top,right,bottom
text.setLayoutParams(params);
于 2012-07-16T12:57:08.153 回答
2
TextView tv = (TextView) findViewById(R.id.tvId);   
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
tv.setLayoutParams(llp);
于 2012-07-16T12:51:58.577 回答
2

请注意,并非所有 LayoutParams 都有方法 setMargins();

RelativeLayout、LinearLayout 等都有自己的内部类 LayoutParams,因此 setMargins 的可用性并不总是可用的。

于 2013-05-09T11:34:52.040 回答
1

试试这个:它有效....

LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent);

Params.SetMargins(0, 10, 0, 0);

FirstName.LayoutParameters = Params;
于 2015-05-18T10:09:17.067 回答
0

您可以setMargins()LinearLayout.LayoutParams. 有关更多信息,请参阅此 StackOverflow 问题的答案。

于 2012-07-16T12:52:40.123 回答
0
        TextView tv = (TextView)findViewById(R.id.item_title));
        RelativeLayout.LayoutParams mRelativelp = (RelativeLayout.LayoutParams) tv
                    .getLayoutParams();
        mRelativelp.setMargins(DptoPxConvertion(15), 0, DptoPxConvertion (15), 0);
        tv.setLayoutParams(mRelativelp);

    private int DptoPxConvertion(int dpValue)
    {
       return (int)((dpValue * mContext.getResources().getDisplayMetrics().density) + 0.5);
    }

textview 的 getLayoutParams() 应根据xml 中 textview 的 Parent转换为相应的 Params 。

<RelativeLayout>
   <TextView
    android:id="@+id/item_title">
</RelativeLayout>

如果TextView的parent是RelativeLayout的意思,那么RelativeLayout.LayoutParams如上。如果 parent 是 LinearLayout 则意味着

LinearLayout.LayoutParams mLinearlp = (LinearLayout.LayoutParams) tv
                    .getLayoutParams();

要在不同设备上呈现相同的实际尺寸,请使用我在上面使用的 DptoPxConvertion() 方法。setMargin(left,top,right,bottom) 参数将采用像素而不是 dp 中的值

于 2017-09-06T13:08:24.137 回答