通常我们直接在xml里设置margin,例子:
<Button android:layout_margin="5dip" />
但是有些情况下,比如你不想把他们的margin大小写死,而是希望在不同分辨率下显示不同的margin大小,这个时候需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢?
android api中,我们发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).它的直接的子类有: FrameLayout.LayoutParams;LinearLayout.LayoutParams; RelativeLayout.LayoutParams.
下面我们看个Android 在Java代码中设置margin值的例子,
假如我们的xml中设置如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_view"> <Button android:id="@+id/btn_turn_stats" android:layout_centerInParent="true" android:background="#00000000" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
现在想让这个button在中间位置靠下50dp,加入button大小是60dp*80dp,代码中的实现
btnTurnStats = (Button) findViewById(R.id.btn_turn_stats); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(btnTurnStats.getLayoutParams()); lp.setMargins((realScreenWidth / 2 - 30), (realScreenHeight / 2 -40 + 50),0,0); btnTurnStats.setLayoutParams(lp);
这里设置的大小其实按照严格要求应该是相对当前屏幕的大小, 这个需要开发者自己去计算。
一般都是根据图片的实际象素,转化为对应大小的dp
(1233)