一、设置视图的宽和高
1、xml文件设置视图宽、高和间距
APP控件通常是长方形形状(因为手机就是长方形的),所以控制宽、高的属性值分别为android:layout_width、android:layout_height,宽和高的取值主要有下列3种:
(1)match_parent
该参数表示的与上级视图保持一致,上级视图的尺寸有多大,当前视图就有多大。
(2)wrap_content
该参数表示与内容自适应。对于文本视图来说内部文字需要多大的显示空间,当前视图就会占用多大尺寸,但是不会超出上级视图的宽度,一旦超过就要换行;最高不能超过上级视图的高度,一旦超过就会被隐藏。
(3)dp值设置
这个就是写具体的以dp为单位的值,可以严格指定控件大小。
2、Java代码调用视图对象设置宽、高和间距
首先,先声明一下正常的开发过程中是很少采用Java文件去设置视图的一些布局,因为这一操作相对复杂,并且不太符合Android开发的一个设计逻辑,一般是前端(可见的操作页面)代码写在xml,后端(业务逻辑部分)代码写在Java,但是这里还是要提一下Java代码怎么处理视图的操作。依序执行一下三个步骤:
(1)调用控件对象getLayoutParams方法获取布局参数,参数类型为ViewGroup.LayoutParams。
(2)布局参数的width属性表示宽度,height属性表示高度,修改这两个属性,即可以调整控件的宽和高。
(3)调用控件对象的setLayoutParams方法,填入修改后的布局参数使之生效。
不过这里的布局参数默认为px单位,要是想用dp单位需要转换,后续可能会单独出一篇讲怎么转换的文章,这里不详细说。其中的Java实现布局的方式案例也就不提供代码了,根据我说的属性,大家可以试一试。
二、设置视图的间距
这里面接受几个常用的属性,一般的视图里面会包括这些属性,但不局限于这些属性,还有一些没有提到的大家可以去查找官方文档,这里只是带大家入个门,这里有必要说明一下,之前提到的TextView是继承View的,也就是相关的视图控件都是由View派生来的,同时ViewGroup也是继承于View的,布局则是继承于ViewGroup,清晰的表示如下:
View--->控件,View--->ViewGroup--->布局
1、属性介绍
(1)android:layout_marginBottom、android:layout_marginLeft、android:layout_marginRight、android:layout_marginTop是视图与外部布局的底部、左部、右部、顶部的之间的间距的属性,其中的赋值单位可以采用dp等单位。
(2)android:layout_margin表示的是当前视图与外部布局的边距,这里直接包括四周,也就是设置好该属性的值,相当于对上面的四个的叠加。
(3)android:paddingBottom、android:paddingLeft、android:paddingRight、android:paddingTop是视图与内部布局的底部、左部、右部、顶部的之间的间距的属性,其中的赋值单位可以采用dp等单位。
2、设计案例
(1)Java代码部分:
public class ViewMarginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_margin);
}
}
(2)xml代码部分
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#00AAFF"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:background="#FFFF99"
android:paddingBottom=""
android:paddingLeft=""
android:paddingRight=""
android:paddingTop=""
android:padding="60dp">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"></View>
</LinearLayout>
</LinearLayout>
(3)运行结果演示