动态设置控件的Margin
动态设置控件的Margin
fantasiter 发表于2年前
动态设置控件的Margin
  • 发表于 2年前
  • 阅读 168
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 动态设置Margin
在屏幕适配的时候我们往往需要在代码里动态设置控件的边距(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,所以轻易不能使用
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 109
码字总数 23997
×
fantasiter
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: