这是我参与「第四届青训营 」笔记创作活动的第2天
今天介绍一下常用的UI控件与布局。
UI控件
定义控件
- 给控件指定一个id
- 给控件指定宽度和高度
- 再加入一些该控件特有的属性
常用属性
- android:layout_width, android:layout_height → 指定控件的宽度和高度 可选值:match_parent(和父控件大小一样),wrap_content(由控件内容决定控件大小)
- android:gravity → 子元素在该容器内的对齐方式 可选值:top, bottom, left, right, center等
- android:visibility → 控件的可见性 可选值:visible(可见,默认),invisible(不可见,但仍然占据原来的位置和大小),gone(不可见,且不占据屏幕空间)
常用控件的属性和方法
-
TextView
- android:text → 文本内容
- android:textSize → 文本大小
- android:textColor → 文字颜色
-
Button
- android:text → 按钮上的文字
- android:textAllCaps → 是否将text自动转换为全大写
-
EditText
-
android:hint → 输入文字前输入框显示的提示性内容
-
android:maxLines → 最大行数
-
获取EditText中的内容:
//绑定交互事件监听器 EditText editText = (EditText) findViewById(R.id.edit_text); String inputText = editText.getText().toString();
-
-
ImageView
-
android:src → 图片地址
-
在代码中更改图片内容:
//绑定交互事件监听器 ImageView imageView = (ImageView)findViewById(R.id.image_view); imageView.setImageResource(R.drawable,img);
-
-
ProgressBar
- 调整可见性:使用getVisibility()和setVisibility()方法获取和更改控件的可见性,可以向setVisibility()中传入View.VISIBLE、View.INVISIBLE、View.GONE三种值。
- 进度条的进度:android:max → 最大进度,在代码中用getProgress()、setProgress()获取和调整进度。
-
AlertDialog:警告对话框
-
ProgressDialog:带进度条的警告对话框
文档地址:www.apiref.com/android-zh/…
四种常用布局
LinearLayout
以水平/垂直方向排列组件
属性:
- android:orientation → 指定排列方向; 可选值:vertical/horizontal
- android:layout_weight → 使用比例的方式指定控件的大小; 某控件的高度/宽度被layout_weight按比例指定时,layout_height/layout_weight不再起作用,此时可以将其设为0dp.
注意事项:
- LinearLayout的排列方向为horizontal时,内部控件不能将宽度指定为match_parent;同理当排列方向为vertical时,内部控件不能将高度指定为match_parent。
- android:layout_gravity属性指定控件在布局中的对齐方式,当LinearLayout的排列方向为horizontal时,只有垂直方向上的对齐方式才会生效,同理同理当排列方向为vertical时,只有水平方向的对齐方式才会生效。
RelativeLayout
通过相对父容器/兄弟组件的位置排列组件
适用于复杂场景,可以消除嵌套视图组从而提高性能
FrameLayout
最简单的布局方式,所有添加其中的视图都以层叠的方式显示。先添加的视图显示在底层,后添加的视图显示在顶层。 默认在左上角对齐,可以通过layout_gravity,layout_marginTop,layout_marginLeft等设置位置。
特定属性:
- android:foreground → 设定前景图像,也就是覆盖在视图上面的图像
- android:foregroundGravity → 设置前景图像位置
ConstrantLayout
通过约束组件的位置排列组件,所有视图都根据其与同级视图和父布局之间的关系进行布局,可以创建大型复杂的布局,适用于复杂场景。
因为这是一个后添加的布局,所以它的标签为<androidx.constraintlayout.widget.ConstraintLayout>
详细用法可以参考这篇文章:codeantenna.com/a/TMGzSjyhy…
参考:
《第一行代码》第二版
juejin.cn/post/712271…
官方文档 www.apiref.com/android-zh/…