如何在安卓中仅设置顶部边距?

3

我正在尝试通过编程方式仅设置顶部边距,我正在这样做:

 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);

现在的问题是,在XML文件中,我给定了一些右边距和左边距的值。但是,通过Java类在编程时这样做会影响XML值,有没有办法只设置顶部边距?

4个回答

4
你可以直接修改 paramstopMargin :
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.topMargin = 10;

3
我猜答案大概是这样的:
     TextView tv = (TextView)findViewById(R.id.tv_1);
     LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
     params.topMargin = 10;
     tv.setLayoutParams(params);

那个10是指10像素还是10 DPI? - JPM
2
这个类的文档中所有内容都是以像素为单位的:http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html 如果需要在dpi和像素之间进行转换,有许多示例可供参考。 - NameSpace

3
获取其他边距并重新设置它们:
int leftMargin = params.leftMargin;
int rightMargin = params.rightMargin;
int bottomMargin = params.bottomMargin;

params.setMargins(leftMargin, rightMargin, 10, bottomMargin)

2
你需要。
android:layout_marginTop="5dp"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接