在屏幕适配的时候我们往往需要在代码里动态设置控件的边距(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,所以轻易不能使用