android 布局管理器
在上一篇文章的末尾,我在描述活动之后让您垂涎三尺,而没有告诉您如何构建UI,因此我们开始吧。 在Android SDK中,布局与定义活动行为的Java代码是分开的。 使用这种关注点分离,可以更轻松地修改布局而不必担心代码。
Android布局采用XML格式,位于res\layout
文件夹中。 您可以针对不同的方向,屏幕尺寸或文化使用多种版本的布局,Android SDK会根据设备选择合适的布局。 我们现在不会为此担心。 对于简单的布局,一个版本就足够了。
在本文中,我将向您展示如何使用布局管理器来使用XML和Java来定位在Android SDK中称为“ View
的小部件。 下次,我将通过有关视图本身以及如何在布局中或以编程方式控制视图的更多详细信息来完成此说明。
Android Studio中还有一个设计器工具可帮助您构建布局。 由于我相信最好首先了解如何手动构建事物,然后您将了解足够的知识以能够自己进行探索,因此我将坚持使用代码。
您的第一个布局
这是一个简单的布局,在res\layout\activity_main.xml
文件的LinearLayout
布局管理器中,具有两个TextView
视图,每个视图都显示一个文本字符串:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:text="My first textview"/>
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:text="My second textview"/>
</LinearLayout>
每个布局都有至少一个视图作为根,但是通常是布局管理器,例如LinearLayout
, RelativeLayout
或ConstraintLayout
因为这些视图是为LinearLayout
其他视图而构建的。 我在本示例中使用了线性布局,因为它很容易理解:如果将android:orientation
属性设置为vertical ,则所有视图将彼此对齐;如果将其设置为水平,则它们将并排排列 。
要将布局与活动一起使用,必须使用setContentView()
方法在活动的onCreate()
事件中设置布局:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
视图和布局管理器属性
所有视图(包括布局管理器)都有专有属性,可以将其添加到XML声明中以控制其大小和填充。 例如,您可以像上面的布局一样在dp(与密度无关的像素)中指定android:layout_height
和android:layout_width
,或使用wrap_content
和match_parent
值:
- wrap_content:视图的大小(宽度或高度)将是显示其内容所需的大小。 例如,如果显示文字的视图很长,则将wrap_content用作高度,这样它就不会在底部被截断。
- match_parent:视图的大小(宽度或高度)将与其父布局元素的大小相同。 在API级别7和更低级别中,该名称以前称为
fill_parent
,因此您仍会不时看到该名称。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="My first textview"/>
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="My second textview"/>
</LinearLayout>
每个布局管理器还具有控制其包含的视图的位置的属性,例如前面所述的LinearLayout
的android:orientation
。
可以嵌套布局管理器以创建复杂的布局:例如,您可以在水平线性布局或网格布局内添加垂直线性布局。 不过,为了使渲染更有效率,您应注意避免嵌套太多布局。
因此,下一次,我们将看一下如何使用需要用户交互的复杂视图,以及如何从Java代码控制这些视图。
翻译自: https://www.javacodegeeks.com/2017/01/get-started-android-development-layout-managers.html
android 布局管理器