Android 以编程方式文本视图的布局边距
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11504635/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
layout margin for text view programmatically
提问by sivan esan
If I use xml file I have a option called layout_margin (for example layout_margin ="1dp" for text view ) but I want to set programmatically and I dont know how to do it.
如果我使用 xml 文件,我有一个名为 layout_margin 的选项(例如 layout_margin ="1dp" for text view )但我想以编程方式进行设置,但我不知道该怎么做。
回答by Andro Selva
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)textview.getLayoutParams();
params.setMargins(20, 0, 0, 0);
textview.setLayoutParams(params);
回答by MicroEyes
Please Google before adding your question to StackOverflow.
在将您的问题添加到 StackOverflow 之前,请谷歌。
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);
回答by AkashG
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);
回答by ViliusK
Note, that not all LayoutParams has method setMargins();
请注意,并非所有 LayoutParams 都有方法 setMargins();
RelativeLayout, LinearLayout etc has their own inner class LayoutParams, so availability of setMargins is not always available.
RelativeLayout、LinearLayout 等有它们自己的内部类 LayoutParams,所以 setMargins 的可用性并不总是可用的。
回答by Nermeen
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);
回答by Ankita
Try This : It worked ....
试试这个:它有效......
LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent);
Params.SetMargins(0, 10, 0, 0);
FirstName.LayoutParameters = Params;
回答by anand krish
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);
}
getLayoutParams() of textview should be casted to the corresponding Params based on the Parent of the textview in xml.
textview 的 getLayoutParams() 应该根据xml 中 textview的Parent转换为相应的 Params 。
<RelativeLayout>
<TextView
android:id="@+id/item_title">
</RelativeLayout>
If parent of the TextView is RelativeLayout means, then RelativeLayout.LayoutParams as above. If parent is LinearLayout means then
如果TextView 的parent 是RelativeLayout 的意思,那么RelativeLayout.LayoutParams 如上。如果 parent 是 LinearLayout 意味着
LinearLayout.LayoutParams mLinearlp = (LinearLayout.LayoutParams) tv
.getLayoutParams();
To render the same real size on different devices use DptoPxConvertion() method which I have used above. setMargin(left,top,right,bottom) params will take values in pixel not in dp.
要在不同的设备上渲染相同的实际大小,请使用我上面使用的 DptoPxConvertion() 方法。setMargin(left,top,right,bottom) 参数将采用像素而不是 dp 的值。
回答by Angelo
You can use the setMargins()on the LinearLayout.LayoutParams. See the answer of this StackOverflow questionfor more information.
您可以setMargins()在LinearLayout.LayoutParams. 有关更多信息,请参阅此 StackOverflow 问题的答案。

