文档章节

动态设置控件的Margin

fantasiter
 fantasiter
发布于 2016/06/13 09:42
字数 348
阅读 197
收藏 1
在屏幕适配的时候我们往往需要在代码里动态设置控件的边距(Margin),因为子控件(ImageButton,Button等)没有直接设置Margin的方法或者其他原因.
1.
Margin的动态设置如下:

    //1 首先初始化控件
    Button button = new Button(this);
    //2 获取父控件的属性并且设置好属性
    LinearLayout.LayoutParams buttonLayoutParams = new                  LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonLayoutParams.setMargins(50, 10, 0, 0);
    button.setLayoutParams(buttonLayoutParams);
    //3 初始化父控件
    LinearLayout layout = new LinearLayout(this);
    //4 把子控件加入到父控件里
    layout.addView(button);

2.除了直接设置子控件的Margin外,我们还可以通过设置父控件的Padding来间接设置子控件的Margin.
对于如下的布局文件就可以才起第二种方法:

    <LinearLayout
                    android:id="@+id/linearBullet"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:padding="@dimen/padding_3dip"
                    android:stretchColumns="*"
                    >


                    <ImageButton
                        android:id="@+id/button5"
                        android:layout_width="@dimen/width_50dp"
                        android:layout_height="@dimen/height_50dp"
                        android:layout_column="0"
                        android:background="@null"
                        android:scaleType="fitCenter"
                        android:src="@drawable/bullet_img"
                        android:text="字幕"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="字幕"
                        android:gravity="center_horizontal"
                        android:textColor="@color/videoview_text_color"
                        android:layout_gravity="center_horizontal"/>
                </LinearLayout>

下面是在class里动态设置父控件的Padding:
    
    LinearLayout layout = (LinearLayout)findViewById(R.id.linearBullet);
    //利用Padding方法设置边距
    layout.setPadding(20,20,20,20);

相比较来说,第二种方法好一点,第一种局限性太大,因为xml的布局已经定型,不能随意addView,所以轻易不能使用

© 著作权归作者所有

共有 人打赏支持
fantasiter
粉丝 1
博文 116
码字总数 24736
作品 0
青岛
私信 提问
Auto Layout 和 Constraints

自动布局Auto Layout Auto Layout,通过设置在View上的约束,动态计算视图层次结构中所有的View的尺寸和位置。举个栗子,你约束一个Button,令它的水平中心线和一个ImageView相同,并且它的上...

hejunbinlan
2016/08/01
2
0
Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)

小菜最近在处理图片的圆角,不止是四个角全是圆角,还包括单左侧/单右侧/对角线方向的圆角。因为自己太菜只能寻求网上的大神,发现一个自定义圆角布局,这样可以变相的解决我的需求,还可以实...

阿策神奇
06/01
0
0
使用Windows8开发Metro风格应用四

我们紧接着上篇,开始我们的Metro风格应用开发。 -----------------------------------我是华丽的分割线----------------------------------------- 12.在 XAML 中定义应用布局 a)在接下来的...

晨曦之光
2012/06/07
189
0
AutoFlowLayout:多功能流式布局与网格布局控件

近期工作需要用到流式布局,网上也有很多关于这方面的资料。发现流式布局与网格布局的自定义很有意思,是学习自定义控件的一个很好的方式,所以就撸了个几百行代码的控件,既实用又具有学习价...

2017/08/07
0
0
QSS知识总结

QT样式表单 QT的样式表单允许我们在对程序不做任何代码上的更改的情况下轻松改变应用程序的外观。 其思想来源于网页设计中的CSS,即可以将功能设计和美学设计分开。 它的语法和概念和HTML CS...

tiankefeng0520
2014/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
28分钟前
0
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
8
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
4
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
昨天
5
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
昨天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部