文档章节

动态设置控件的Margin

fantasiter
 fantasiter
发布于 2016/06/13 09:42
字数 348
阅读 185
收藏 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
博文 115
码字总数 24535
作品 0
青岛
Auto Layout 和 Constraints

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

hejunbinlan
2016/08/01
2
0
使用Windows8开发Metro风格应用四

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

晨曦之光
2012/06/07
183
0
Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)

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

阿策神奇
06/01
0
0
Silverlight+WCF 新手实例 象棋 主界面-棋盘区(二十二)

在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 这节我们要布局Index.xaml界面。 首先,我们定义一下全局的宽和高:1000*620[数字差不多就行了] 一堆代码,都是自动生成的,只是改了...

晨曦之光
2012/03/09
0
0
web打印的几种实现方法(转载)

web打印的几种实现方法(转载) web打印,web打印控件的三种实现方法 做管理系统的时候,打印一直是个棘手的问题,做B/S的系统这个问题就更加突出了!下面举出三种常用的web打印处理方式 1、...

什么是程序员
2015/09/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

71.告警系统主脚本 配置文件 监控项目

20.20 告警系统主脚本(main.sh) 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本(main.sh): ~1.约定:把以后所有的shell脚本放在/usr/local/sbin下,也方便我们查...

王鑫linux
21分钟前
0
0
装饰者模式

装饰者模式 Q:何为装饰模式? ()地给一个对象添加一些额外的(),并且()时,并不影响原对象。扩展功能来说,装饰器模式相比生成子类更为灵活。 Q:使用场景? 1.想要在不影响其他对象的情况下...

阿元
41分钟前
0
0
GO 切片(slice)相关语法

package mainimport("fmt")func main() {var intArr [5]int = [...]int{1,2,3,4,5} //定义一个数组slice := intArr[2:4] //第二个(包含)下标到第四个下标(不包含)fmt.Println...

汤汤圆圆
43分钟前
0
0
活动招募 HUAWEI HiAI公开课·北京站-如何在4小时把你的APP变身AI应用

人工智能和机器学习是全球关注的新趋势,也是当前最火爆、最流行的话题。当你拿手机用语音助手帮你点外卖,智能推荐帮你把周边美食一网打尽;当你拿起P20拍照时,它将自动识别场景进行最美优...

华为终端开放实验室
57分钟前
1
0
匹配两位小数,js正则

var regex = /^\d*(\.[1-9]|\.\d[1-9])*$/ console.log(1.2,regex.test(1.2)); console.log(0.3,regex.test(0.3)); console.log(1.03,regex.test(1.03)); ......

微信小程序-暗潮
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部