常用UI控件与布局 | 青训营笔记

138 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第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/…

image-20220805101815008.png

image-20220805101850966.png

四种常用布局

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

通过相对父容器/兄弟组件的位置排列组件

适用于复杂场景,可以消除嵌套视图组从而提高性能

image-20220805110527781.png

FrameLayout

最简单的布局方式,所有添加其中的视图都以层叠的方式显示。先添加的视图显示在底层,后添加的视图显示在顶层。 默认在左上角对齐,可以通过layout_gravity,layout_marginTop,layout_marginLeft等设置位置。

特定属性:

  • android:foreground → 设定前景图像,也就是覆盖在视图上面的图像
  • android:foregroundGravity → 设置前景图像位置

ConstrantLayout

通过约束组件的位置排列组件,所有视图都根据其与同级视图和父布局之间的关系进行布局,可以创建大型复杂的布局,适用于复杂场景。

因为这是一个后添加的布局,所以它的标签为<androidx.constraintlayout.widget.ConstraintLayout>

详细用法可以参考这篇文章:codeantenna.com/a/TMGzSjyhy…

image-20220809213647749.png

参考:
《第一行代码》第二版
juejin.cn/post/712271…
官方文档 www.apiref.com/android-zh/…