原创, 安卓

android使用Java代码设置margin

通常我们直接在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

(1195)

Related Post