当Activity处理用户与您的应用程序的交互时,布局决定了应用程序的外观。 在本文中,您将学习布局如何定义用户界面的视觉结构,例如活动或应用程序小部件的UI。
布局
布局文件是一个XML文件,描述了应用程序屏幕的GUI。 对于此示例,我们将创建一个线性布局,该布局用于并排显示GUI组件。 这些组件可以垂直或水平显示。 水平显示时,它们显示在一行中。 垂直显示时,它们显示在单列中。
这是线性布局的示例。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.tutsplus.code.android.tutsplusupload.MainActivity">
</LinearLayout>
在下面的图像中,您可以查看代码及其在Android设备上的显示方式。
![代码如何在Android设备上显示](https://i-blog.csdnimg.cn/blog_migrate/99fc8f1c11eac168624476b8b95ba33c.png)
布局以XML声明开始。 它指定XML版本和编码。
下一行是线性布局的开始标签。 在它里面,您有一行如下所示:
xmlns:android="http://schemas.android.com/apk/res/android"
这指定了XML名称空间,用于为XML文档中的元素和属性提供唯一的名称。 xmlns
:android
这里描述了Android名称空间。 Google选择了这种命名空间系统,以帮助Android Studio在编译时处理错误。 Android名称空间有助于将官方Android小部件与自定义小部件区分开。 例如,它使您可以区分自定义textview
小部件和Android textview
小部件。 命名空间的URI为http://schemas.android.com/apk/res/android
。
下一个名称空间xmlns:tools
允许您访问工具属性。 这不是默认的名称空间:您可以在不使用Android应用程序的情况下对其进行构建。 但是,使用它可以帮助您将元数据添加到资源文件中,这有助于在“设计视图”中操作和渲染布局。 引用工具属性提供的元素或属性时,必须添加工具前缀。 稍后我将解释如何在此代码中使用tools属性。
现在,让我们看下一部分。
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
这些属性用于确定布局的宽度和高度。 它们还说明了要使用的填充量以及组件是垂直放置还是水平放置。 在此,选择垂直方向。
宽度和高度
android:layout_width
和android:layout_height
用于指定要用于布局组件的宽度和高度。 您可以使用wrap_content
或match_parent
值来确定组件的宽度和高度。 wrap_content
表示布局(或视图)应足够容纳内容。 match_parent
表示它应与父布局一样宽。
填充
填充是视图或布局与其边框之间的空间。 当您使用android:padding
,视图或布局所有四个侧面的空间将具有指定的尺寸。 如果要分别控制填充的各个部分,可以使用android:paddingBottom
, android:paddingLeft
, android:paddingRight
和android:paddingTop
。 请注意,这些值在“ dp”(与密度无关的像素)中指定。 这些即将更多!
保证金
在将填充应用于布局或视图及其边框(在组件内)时,将边距应用于布局或视图边界以及组件外部的其他周围组件。 您可以使用android:layout_margin
一次指定所有边距,也可以使用android:layout_marginBottom
, android:layout_marginLeft
, android:layout_marginRight
和android:layout_marginTop
分别控制填充的各个部分。 这些也在dp中指定。
什么是dp
?
与密度无关的像素,简称dp,是基于屏幕物理密度的抽象单位。 定义UI布局时,使用与密度无关的像素。 它们用于以密度无关的方式表示布局或位置的尺寸。 您可以在此处阅读有关Android中密度独立性的更多信息 。
语境
默认情况下,context属性用于声明与布局关联的活动。 在这里,您可以看到示例布局与MainActivity相关联。
tools:context="com.tutsplus.code.android.tutsplusupload.MainActivity"
您也可以将其写成较短的形式:
tools:context=".MainActivity"
仅在“设计视图”中工作时才使用此选项,因为布局可以与多个活动相关联。
子组件
布局包含子组件。 实际上,这就是它们的全部目的:组织和显示其他组件。
让我们向线性布局添加一些组件-从按钮视图开始。
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
BeerAdviser
android:text="Button" />
我们还将添加一个文本视图,该文本视图与按钮视图具有非常相似的属性。
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a text view" />
我们已经介绍了android:layout_height
和android:layout_width
,所以现在让我们看看其他的。
组件编号
android:id
属性用于为组件提供一个标识名称。 这使您可以使用findViewById()
方法从活动的Java代码内访问组件。
组件文字
android:text
属性用于告知Android文本组件应显示什么。 在按钮视图的情况下,将显示文本按钮。
到目前为止,让我们运行代码,看看它是什么样。
![Android设备在屏幕上显示一个按钮](https://i-blog.csdnimg.cn/blog_migrate/bdfbba6e3fd206f34bada3e427f844e2.png)
重新封装,第一个元素必须是您将要使用的布局。 这是LinearLayout
。 指定的方向告诉Android在单个垂直列中显示布局中的组件。 <Button>
元素是将要显示的第一个元素。 它会占用父级的宽度,而其高度将取决于其文本内容。
第二个元素是一个文本视图,该视图将显示在按钮下方。 高度和宽度都将限制为内容的高度和宽度。
字符串资源
在上面的示例中,我们使用android:text="This is a text view"
对文本视图的文本进行了硬编码。 当您刚开始时这很好,但这不是最好的方法。 假设您创建了一款在Google Play商店中广受欢迎的应用,并且您不想将自己限制在一个国家或地区。 如果您对布局文件中的所有文本进行了硬编码,那么将很难使您的应用程序支持不同的语言。 那么最好的方法是什么?
最好的方法涉及将文本值放在字符串资源文件: strings.xml中 。 这使您的应用程序的国际化变得容易。 由于只需要编辑一个文件,因此可以更轻松地对应用程序进行全局更改。
strings.xml文件位于app / src / main / res / values文件夹中。 当您打开它时,它应该具有这样的结构。
<resources>
<string name="app_name">Tutsplus Upload</string>
</resources>
在这里,您有一个名为app_name
字符串资源,其值为Tutsplus Upload
。
您可以使用相同的结构添加其他字符串资源。 对于布局中的按钮和文本,结构可以如下所示。
<resources>
<string name="app_name">Tutsplus Upload</string>
<string name="main_button">Button</string>
<string name="first_text">This is a text!</string>
</resources>
要在布局中使用这些字符串资源,必须使用各自的资源更新两个视图的文本部分。
android:text="@string/main_button"
android:text="@string/first_text"
@string
告诉Android在字符串资源文件中查找文本值。 之后是资源名称。 Android将查找与该名称对应的资源的值,并将其用于您的组件。
总结一下,这是您的布局外观:
![Android设备上的最终代码和布局](https://i-blog.csdnimg.cn/blog_migrate/05175bd93392c931f26323a61f87d84d.png)
结论
在本文中,您学习了一些使用布局的基础知识。 在构建更复杂的应用程序时,您将看到所有部分如何组合在一起。 在遵循了这篇文章之后,您应该能够理解如何使用线性布局,文本和按钮视图以及字符串资源。
翻译自: https://code.tutsplus.com/tutorials/beginners-guide-to-android-layout--cms-29984