常用控件和常用布局

综合来看,控件和布局构成我们多姿多彩的APP画面,而Android是由xml来绘制自己的界面,android有自己的成套机制,所以我们需要遵守安卓的UI编写方式。编写方式主要是布局和控件,我们首先来创建一个工程。

常用控件

TextView

见面知意,文本视图,该控件就是相当于文本的展示。
我们对activity_main文件进行修改,
image

注意:关于上述代码写固定值的单位描述可以参考文章:https://www.cnblogs.com/yangmingyu/p/6928009.html
其他的属性:
gravity:指定文字的对齐方式,一个组件的内部文件的布局方式。
image

显示颜色和大小:
image

Button

用于程序和用户交互的空间,按钮。
直接看代码:
加入Button之后展示的效果:
image

有了样式之后我们需要写监听按钮的逻辑:
目前有两种写法:
1.直接写,不过注意需要用到kotlin的扩展库,需要在build.gradle中导入Kotlin的扩展库
image
2.使用接口的方式来进行注册
image

EditText

用来接收输入参数,
image
maxLines属性:
image

EditText与Button交互:
image

ImageView

用于在界面上展示图片一种控件,我们做这个通常是在drawable目录下的。现在主流手机的分辨率是xxhdip的,所以我们在res目录下创建一个drawable-xxhdpi目录,在里面放入图片。
image

编写activity_main.xml文件
image

通过button动态修改图片:
image

ProgressBar

用于在界面上面展示一个进度条,在activity_main中编写代码查看样式
image

当我们完成数据的加载的时候,需要将进度条去掉,看代码实现,与Button交互
image

展示水平进度条:
image

button交互代码:
image

AlertDialog

弹出一个对话框,特点是这个对话框能够屏蔽其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要内容或者警告信息。不需要编写xml样式,直接在MainActivity直接调用:
image

常用布局

有了上面的组件,他们的排列方式是不是需要管控一下呢,不然的话,我们怎么能够组合出来漂亮的界面呢,所以我们需要一种机制来让他们组合在一起,这种机制就是布局。我们来学习一下Android中常见的三种布局,先创建一个工程UILayoutTest

LinearLayout

LinearLayout是线性布局,
image

布局与控件结合的组合方式:
image

Layout_weight:允许我们使用比例额方式来指定控件的大小,在手机适配性方面起到非常重要的作用。

当控件中指定了Layout_weight的时候,控件的宽度layout_width就失效了。会优先作用Layout_weight
image

适配案例:
image

RelativeLayout

RelativeLayout称为相对布局,特点是排列不规则,通过相对的位置,让控件出现在布局的任意位置。
image

相对于button3进行布局:
image

FrameLayout

FrameLayout又叫做帧布局,相对应用场景比较少,所有的控件会默认摆放在布局的左上角

image

可以通过layout_gravity指定布局中控件的对齐方式

自定义控件

当安卓提供了组件不够用了的时候,我们需要自己定义组件。

引入布局

我们所有的控件都是直接过着间接继承View的,所有的布局都是直接或者间接继承ViewGroup的,

View是Android中最常见的UI组件,它可以在屏幕上,绘制一块区域,并能响应这块区域的事件,我们是用的空间其实就是在View上添加了各自特有的功能

ViewGroup是一种特殊的View,它可以包含多个子View和子ViewGrpoup,是一个用来存放布局和控件的容器
首先我们创建一个项目 UICustomViews项目,我们现在要实现一个App应用界面的标题栏效果,因为多个界面需要使用到这个样式,所以我们需要自定义一个控件,在之后的布局中直接引入即可。
如下图
image
首先创建一个title.xml文件,在里面编辑如下代码
image
我们直接在activity_main中直接引入,样式就出来了。
image

创建自定义控件

引入布局只是样式的展示,但是我们其中的按钮,没有实现事件的响应。我们不至于在每个Activity里面编写事件的注册代码,所以我们通过自定义控件的方式来解决,创建一个TitleLayout,
image

引入控件
image

posted @   IT小五  阅读(168)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示