android的view中有setPadding,但是没有直接的setMargin方法。如果要在代码中设置该怎么做呢?
可以通过设置view里面的LayoutParams
设置,而这个LayoutParams是根据该view在不同的GroupView而不同的。
布局文件如下:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/ceshi_ly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray" >
android:id="@+id/ceshi_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_dark"
android:text="测试动态设置margin" />
代码如下:
package com.android.testdemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView ceshiTv = (TextView) findViewById(R.id.ceshi_tv);
LinearLayout.LayoutParams lp = (LayoutParams) ceshiTv.getLayoutParams();
lp.setMargins(30, 50, 22, 10);
ceshiTv.setLayoutParams(lp);
}
}效果如下:
当然也可以把其封装成方法,如下:
public static void setMargins (View v, int l, int t, int r, int b) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
p.setMargins(l, t, r, b);
v.requestLayout();
}
}
原文:http://blog.csdn.net/u014649598/article/details/45580461