Android UI

大约 5 分钟

Android UI

用户界面的基本构建块是从View类创建的View对象,它占据屏幕上的一个矩形区域,负责绘制和事件处理。View是widget的基类,用于创建交互式UI组件,如按钮、文本字段等。ViewGroupView的一个子类,提供了不可见的容器,用于保存其他视图或其他视图组并定义它们的布局属性。

第三层面上我们有不同的布局ViewGroup子类的类和一个典型的布局定义了一个Android用户界面的视觉结构在运行时,可以创建使用视图ViewGroup对象或你可以声明使用简单的XML文件布局文件夹位于您的项目res/layout文件夹下。

本教程更多关于基于XML文件中定义的布局创建GUI。布局可以包含任何类型的小部件,例如按钮,标签,文本框等。以下是具有LinearLayout的XML文件的简单示例-

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >
  
     <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is a TextView" />
  
     <Button android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is a Button" />
  
     <!-- More GUI components go here  -->
  
  </LinearLayout>

创建布局后,您可以在Activity.onCreate()回调实现中从应用程序代码加载布局资源,如下所示-

  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);  // activity_main 为布局文件的文件名
  }

Android 布局类型

Android提供了许多版式,您几乎可以在所有Android应用程序中使用它们来提供不同的视图,外观。

布局说明
线性布局open in new windowLinearLayout是一个视图组,该视图组在单个方向上垂直或水平对齐所有子级。
相对布局open in new windowRelativeLayout是一个视图组,在相对位置显示子视图。
表格布局open in new windowTableLayout是将视图分为行和列的视图。
绝对布局open in new windowAbsoluteLayout使您可以指定其子级的确切位置。
框架布局open in new windowFrameLayout是屏幕上的占位符,可用于显示单个视图。
列表视图open in new windowListView是一个视图组,显示可滚动项的列表。
网格视图open in new windowGridView是一个ViewGroup,它在二维可滚动网格中显示项目。

布局属性

每个布局都有一组属性,这些属性定义该布局的视觉属性。在所有布局中,只有很少的公共属性,而其他属性是特定布局所特有的。以下是常见的属性,它们将应用于所有布局:

属性说明
android:id这是唯一标识视图的ID。
android:layout_width这是布局的宽度。
android:layout_height这是布局的高度
android:layout_marginTop这是布局顶部的额外空间。
android:layout_marginBottom这是布局底部的额外空间。
android:layout_marginLeft这是布局左侧的额外空间。
android:layout_marginRight这是布局右侧的额外空间。
android:layout_gravity这指定子视图的放置方式。
android:layout_weight这指定应将布局中多少额外空间分配给视图。
android:layout_x这指定布局的x坐标。
android:layout_y这指定布局的y坐标。
android:layout_width这是布局的宽度。
android:paddingLeft这是为布局填充的左侧填充。
android:paddingRight这是为布局填充的正确填充。
android:paddingTop这是为布局填充的顶部填充。
android:paddingBottom这是为布局填充的底部填充。

此处的width和height是layout/view的尺寸,可以根据dp(与密度无关的像素),sp(与比例无关的像素),pt(为1/72英寸的点),px(像素),mm(毫米),最后以英寸为单位。您可以使用精确的测量来指定宽度和高度,但是更常见的是,您将使用以下常量之一来设置宽度或高度-

  • android:layout_width = wrap_content 告诉您将视图调整为其内容所需的尺寸。
  • android:layout_width = fill_parent 告诉您视图变得与其父视图一样大。

gravity属性在定位视图对象中起着重要作用,它可以采用以下一个或多个(用“|”分隔)以下常量值。

常量描述
top0x30将对象推到其容器的顶部,而不改变其大小。
bottom0x50将对象推到其容器的底部,而不改变其大小。
left0x03将对象推到其容器的左侧,不改变其大小。
right0x05将对象推到其容器的右侧,而不改变其大小。
center_vertical0x10将对象放置在其容器的垂直中心,不改变其大小。
fill_vertical0x70如果需要,增大对象的垂直大小,使其完全填满其容器。
center_horizontal0x01将对象放置在其容器的水平中心,不改变其大小。
fill_horizontal0x07如果需要,增大对象的水平大小,以完全填充其容器。
center0x11将对象放在其容器的垂直和水平轴的中心,不改变其大小。
fill0x77如果需要,增大对象的水平和垂直大小,使其完全填满其容器。
clip_vertical0x80可以设置将子元素的顶部和/或底部边缘剪切到其容器边界的附加选项。剪辑将基于垂直重力:顶部重力将剪辑底部边缘,底部重力将剪辑顶部边缘,两者都不会剪辑两个边缘。
clip_horizontal0x08可以设置为将子元素的左边缘和/或右边缘剪切到其容器边界的附加选项。剪辑将基于水平重力:左重力将剪辑右边缘,右重力将剪辑左边缘,两者都不会剪辑。
start0x00800003将object推到其容器的开头,但不改变其大小。
end0x00800005将对象推到其容器的末端,而不改变其大小。

视图标识符

View 对象可能具有分配给它的唯一ID,该ID将在树中唯一标识视图。XML标记内的ID的语法是-

  android:id="@+id/my_button"

以下是@和+符号的简要说明-

  • 字符串开头的符号(@)表示XML解析器应解析并扩展ID字符串的其余部分,并将其标识为ID资源。
  • 加号(+)表示这是必须创建并添加到我们资源中的新资源名称。要创建视图对象的实例并从布局中捕获它,请使用以下命令:
  Button myButton = (Button) findViewById(R.id.my_button);