android在代码中设置margin属性
16lz
2021-01-26
一般常用的是在布局文件中设置margin属性,如:
但是实际需求中,时常需要在代码里来控制view的margin属性,可是view中有setPadding()方法 , 却没有setMargin()方法,应该如何处理呢?
通过查阅android api,可以发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).其直接的子类有: FrameLayout.LayoutParams, LinearLayout.LayoutParams and RelativeLayout.LayoutParams.
可以通过设置view里面的 LayoutParams 设置,而这个LayoutParams是根据该view在不同的GroupView而不同的。
- 方式一
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(tv.getLayoutParams()); lp.setMargins(100, 100, 0, 0); tv.setLayoutParams(lp);
这里的RelativeLayout是说明该view在一个RelativeLayout布局里面。
效果图:
- 方式二
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);lp.setMargins(100, 100, 0, 0);//4个参数按顺序分别是左上右下tv.setLayoutParams(lp);
效果图:
- 方式三
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);lp.setMargins(100, 100, 0, 0);//4个参数按顺序分别是左上右下tv.setLayoutParams(lp);
效果图:
之前看到别人把setMargin封装成方法 , 比较好 , 这里借鉴一下 . 只要是GroupView直接的子类就行 , 即: FrameLayout.LayoutParams, LinearLayout.LayoutParams and RelativeLayout.LayoutParams. 。
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); TextView tv = findViewById(R.id.tv); margin(tv,100, 100, 0, 0);// RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(tv.getLayoutParams());//// lp.setMargins(100, 100, 0, 0);//// tv.setLayoutParams(lp); } public void margin(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(); } }}
更多相关文章
- 修改设置Android(安卓)Preference相关样式
- Android中的ShapeDrawable的一个注意点
- Android(安卓)权限设置大全
- 酷炫轮播广告
- Android(安卓)Studio 设置背景色
- Windows 安装Calabash-Android
- 上中下布局,上下高度指定,中间自适应(左中右同理)
- android基本属性