2.1 布局管理器
最常用的两个布局:
- 线性布局(LinearLayout)
- 相对布局(RelativeLayout)
2.1.1 LinearLayout
每一个Activity
都需要在AndroidManifest
中声明
控件中的最常用的属性:
android:id
:布局或控件的一个标识,便于找到控件,布局本身就是一个控件- id命名使用
@+id/(布局名)
,布局名尽量使用布局名的缩写,便于以后的查找
- id命名使用
android:layout_width
:宽度android:layout_height
:高度wrap_content
:根据内容设置宽度或高度match_parent
:与父布局的宽度或高度相同- 固定宽度或高度单位使用
dp
,字体大小单位使用sp
android:background
:背景,可以为颜色,图片,或者一个自定义的.xml
文件android:layout_margin
:外边距- 可以使用
android:layout_marginTop
等指定边距的位置
- 可以使用
android:layout_padding
:内边距- 可以使用
android:layout_paddingTop
等指定边距的位置
- 可以使用
android:orientation
:布局的方向horizontal
:水平布局vertical
:垂直布局
2.1.2 RelativeLayout
最常用属性:
android:layout_toLeftOf
- 现在一般用
android:layout_toStartOf
代替
- 现在一般用
android:layout_toRightOf
- 现在一般用
android:layout_toEndOf
代替
- 现在一般用
android:layout_alignBottom
android:layout_alignParentBottom
android:layout_below
:用于指定当前的控件在某个控件的下面
2.2 TextView
文字大小、颜色
android:textSize
:设置文字字体大小,单位为sp
android:textColor
:设置文字的颜色android:gravity
:控制元素在该控件里的显示位置
无法显示完全时候
android:maxLines
:设置最大的行数android:ellipsize="end"
:设置当文字太多显示不下时候用...
代替
文字+icon
- 使用
app:drawableEndCompat
在TextView中添加icon - 使用
android:drawablePadding
指定icon与文字的距离
- 使用
中划线,下划线
- 通过Activity里的Java代码实现
- 也可以通过HTML等方法去实现
跑马灯
需要添加的控件设置如下:
1
2
3
4
5android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"同时,需要在Activity中设置:
1
2TextView mTv_7 = findViewById(R.id.tv_6);
mTv_7.setSelected(true);
2.3 Button
Button继承于TextView
加android:textAllCaps="false"
可以设置按钮内的字母不是全部为大写
- 文字大小、颜色
android:textSize
:设置文字的大小android:textColor
:设置文字的颜色
- 自定义背景颜色、形状
android:background
:设置背景- 可以指定颜色实现纯色效果,或者指定
.xlm
文件来实现圆角,描边等效果
- 自定义按压效果
- 通过在背景中指定
.xml
文件来实现一些点击效果
- 通过在背景中指定
- 点击事件
- 方法一(不常用):
android:onClick
:指定点击事件,内容为一个方法,此方法需要在Activity中写出 - 方法二(常用):直接在Activity里为Button设置点击事件
- 由于Button继承于TextView,因此也可以为TextView设置点击事件,也是在Activity中进行设置
- 方法一(不常用):
2.4 EditText
EditText继承于TextView
- 常用属性
android:hint
:为输入框设置提示文本,当未输入内容时显示android:textColorHint
:设置输入框提示信息的颜色android:text
:设置的是默认输入的文字,可以被删掉android:inputType
:设置输入内容的类型,通常必须设置,防止出错android:background
:设置背景或线框形式android:autofillHints
:设置自动填充属性,常用属性可以设置为username
、password
等android:drawableStart
:为文本框开始的时候添加iconandroid:drawablePadding
:设置icon与文本的间距
- 监听事件
- 在Activity中设置监听
- 制作登录界面
2.5 RadioButton
用于设置单选按钮,选择时候不能取消,可以使用RadioGroup
来设置多个单选选项。
就像一道单选题,一个RadioGroup
里可以放置多个RadioButton
,选择时候只能选择其中一个。
默认情况下,不做选择时可以使所有选项没有一个被选择,但一旦做了选择,一个RadioGroup
里有且只有一个被选择,可以更换选项,但是无法取消(除非退出重新进入)。
为避免没有一个被选中的情况,可以为其中某一个RadioButton
设置android:checked
为true
,要设置这个属性,必须为每个RadioButton
设置id
。
- 常用属性
RadioGroup
里可以通过android:orientation
设置水平排列(horizontal)或垂直排列(vertical)
- 自定义样式
- 先为每个
RadioButton
设置android:button="@null"
,将默认的圆圈样式去除 - 通过
android:background
设置选择器样式,与Button
中的选择类似
- 先为每个
- 监听事件
- 可以在Activity中设置监听事件
2.6 CheckBox
复选框,实现复选功能,在一个组中可以选择多个,再次点击可以取消选择。
- 常用属性
- 自定义样式
- 通过
android:button
设置选择器样式,引用一个drawable
- 使用
android:paddingStart
设置自定义图标和文字的间距,需要注意的是,此处android:paddingStart
需要和android:paddingEnd
成对使用,否则会报警告,解决方法是添加android:paddingEnd="0dp"
,或添加tools:ignore="RtlSymmetry"
。
- 通过
- 监听事件
- 可以在Activity中设置监听事件
2.7 ImageView
Button的其他衍生控件:ToggleButton、Switch
常用属性
android:src
:设置控件中的图片源文件android:scaleType
:设置图片的拉伸和缩放fitXY
:撑满控件,宽高比可能发生变化fitCenter
:保持宽高比缩放,直至可以完全显示centerCrop
:保持宽高比缩放,直至完全覆盖控件,裁剪显示
加载网络图片
- 需要使用第三方库,不同的库之间会有一些差异,以”
glide
“为例,在build.gradle
中通过添加如下代码导入第三方库:
1
2
3dependencies {
implementation 'com.github.bumptech.glide:glide:4.14.2'
annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'最新的项目编译依赖配置改到
settings.gradle
中了,则需要在settings.gradle
中添加如下代码配置编译依赖,如果其中某些依赖已经存在的话可以忽略这一步。1
2
3repositories {
google()
mavenCentral()改变gradle构建代码后需要重新同步(Sync)项目。
- 由于加载网络图片时需要使用网络,因此需要给app添加可以使用网络的权限,在
AndroidManifest
里添加:
1
<uses-permission android:name="android.permission.INTERNET" />
- 需要使用第三方库,不同的库之间会有一些差异,以”
2.8 列表视图ListView
- 常用属性
android:listSelector
:设置点击效果,可以通过drawable来定制android:divider
:设置分割线的形式,也可以通过drawable来定制android:dividerHeight
:设置分割线的高度
- Adapter接口
- Demo演示
2.9 网格视图GridView
- 常用属性
android:numColumns
:设置网格的列数android:horizontalSpacing
:设置表格间的水平间距android:verticalSpacing
:设置表格间的垂直间距
- Adapter接口
- Demo演示
2.10 滚动视图ScrollView
- 垂直滚动:ScrollView,子布局只能有一个
- 水平滚动:HorizontalScrollView,子布局同样只能有一个
2.11.1 RecyclerView(一)
RecyclerView能够灵活实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表、网格、瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能。
但是使用起来会稍微麻烦一点,并且没有类似ListView的onItemClickListener监听事件,需要开发者自己实现。
2.11.2 RecyclerView(二)
……未完待续……
本文链接: https://hanqingjiang.com/2023/02/13/20230213_android_UiComponents/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
