一般常用的是在布局文件中设置margin属性,如:

<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"tools:context=".MainActivity"><TextViewandroid:layout_marginLeft="20dp"android:id="@+id/tv"android:layout_width="100dp"android:layout_height="100dp"android:background="#789456"android:gravity="center"android:text="黑暗森林" /></RelativeLayout>

但是实际需求中,时常需要在代码里来控制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在代码中设置margin属性相关推荐

  1. Android如何在java代码中设置margin

    Android如何在java代码中设置margin,也就是组件与组件之间的间距. 代码中设置: LinearLayout.LayoutParams params = new LinearLayout. ...

  2. android 动态设置margin,android 代码中设置margin

    场景:Android怎么在java代码中设置margin Android如何在java代码中设置margin 原创帖,转发请注明出处:http://thierry-xing.iteye.com/blo ...

  3. 转--Android如何在java代码中设置margin

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

  4. android java style_Android 在Java代码中设置style属性--使用代码创建ProgressBar对象

    强烈推荐: 在andriod开发中,很大一部分都要与资源打交道,比如说:图片,布局文件,字符串,样式等等.这给我们想要开发一些公共的组件带来很大的困难,因为公共的组件可能更愿意以jar包的形式出现.但 ...

  5. Android在代码中设置drawableLeft(Right/Top/Bottom)

    根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为: android: ...

  6. 在html中设置margin属性,css中margin的4个属性

    CSS中:margin:auto与margin: 0 auto;有什么区别 CSS中:margin:auto与margin: 0 auto;有什么区别.有的网站中写的是前者意思不同.margin:au ...

  7. android 在代码中设置样式,安卓代码中设置fontFamily中的样式

    今天和视觉调样式的时候,发现一个问题,我们代码中经常使用fontFamily的样式,比如: android:id="@+id/name" android:layout_width= ...

  8. 在html中设置margin属性,margin

    margin (CSS语法) 编辑 锁定 讨论 上传视频 margin,是CSS语法,这个简写属性用于在一个声明中设置所有当前或者指定元素所有外边距的宽度,或者设置各边上外边距的宽度. 中文名 外边距 ...

  9. Android getDimensionPixelSize, 代码中设置字体大小,读xml配置。

    //给一个id为name的TextView设置字体大小  TextView mName = (TextView)findViewById(R.id.name);  mName.setTextSize( ...

最新文章

  1. TensorFlow XLA加速编译器
  2. mysql 5.5.38_数据库的硬迁移和mysql 5.5.38源码安装
  3. [编写高质量代码:改善java程序的151个建议]建议31-在接口中不要存在实现代码...
  4. boost::coroutine2模块实现分段的stack的测试程序
  5. tf报错 之 assertion failed: [Need value.shape >= size, got ] [336 210 3] [224 224 3]
  6. win7系统未响应卡住_电脑怎么修复win7系统 电脑修复win7系统方法【教程详解】...
  7. Redis的安装及原理介绍
  8. 《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程...
  9. iptables官方文档
  10. 华为软件机试测试题C语言,华为软件测试面试经验
  11. 数据遍历打印得小列子
  12. VM安装rhel或linux后,声音很响,如何关闭
  13. 栈的输出_C|简单实现栈、及利用递归将十进制数用其他进制来输出
  14. saber仿真软件_返场预订,视频课程丨开关电源环路补偿设计与仿真
  15. 区块链社会:解码区块链全球应用与投资案例
  16. Python简单实现图书管理系统
  17. python3d动画控制_3D旋转玫瑰花:python-matplotlib实现
  18. INF=0x3f3f3f3f是 什么意思?
  19. ssm+java计算机毕业设计公交路线查询系统l1auz(程序+lw+源码+远程部署)
  20. Linux离线安装Python第三方库Requests

热门文章

  1. linux-qt下载和安装
  2. 原来 goim 是这样实现高并发
  3. 浅析无符号整型和有符号整型
  4. C6000系列的外置flash的烧写流程
  5. Kitchen Plates(暴力写法和学习拓扑排序)
  6. 深度学习/机器学习入门基础数学知识整理(一):线性代数基础,矩阵,范数等
  7. 【数据库测试经验分享】数据库如何测试,怎么进行数据库的测试?
  8. Cholesterol-PEG3400-Biotin,Biotin-PEG3400-CLS 具有良好水溶性的亲脂性脂质-PEG缀合物
  9. 基于ubuntu-base构建根文件系统并移植到RK3568开发板
  10. 2020蓝桥杯省赛Java B组一等奖