【第22期】观点:IT 行业加班,到底有没有价值?

初探Activity2:添加简单的UI控件

原创 2016年05月31日 13:40:34

Activity是用来展示界面的,所以在继续了解Activity的知识之前,还是应该先了解一下如何在Activity中添加简单的UI控件。上一节那个Button按钮,我是通过界面编辑器的“Design”面板直接拖拉进去的,代码是直接生成的。这一节,就通过代码的方式,来给Activity添加一些简单的UI控件。

参考资料

如果要更加深入,可以看CodePath Android Cliffnotes的“Views and Layouts”那一部分的内容。

这节了解的UI控件

View 控件
TextView 文本
Button 按钮
EditText 文本编辑框
ImageView 图片

View和ViewGroup?

在了解UI控件之前,我们首先要知道Android中的“View和ViewGroup”。
这里写图片描述
看上面这个图,Android的图形用户界面是通过上图View和ViewGroup对象这样的层级关系来构建的。View对象通常就是像Button、TextView这样的UI控件。而ViewGroup对象则是一些你看不见的“视图容器”,它定义了它所包含的那些View子元素是怎样布局的,例如是网格列表又或者是垂直列表。

Android中用XML文件对应View和ViewGrop的子类,因此可以用XML来定义一系列UI元素的层级。

另外要注意,看下面官方文档的截图,ViewGroup是View的子类。

具体的View和ViewGroup?

View或ViewGroup 常见的具体元素
View Button、TextView、EditText……
ViewGroup RelativeLayout、LinearLayout、FrameLayout……

截取官方文档:
View
这里写图片描述

从上面的内容,我们知道应该是ViewGroup这个看不见的“容器”包含View子元素。
就是例如LinearLayout中包含着Button、TextView、EditText等等,
所以我们接下来就学习一下,怎么创建LinearLayout,怎么添加Button、EditText等等控件到LinearLayout中。

创建一个LinearLayout

1.在AndroidStudio的”res/layout”目录中,新建或打开一个layout布局xml文件。这里可以用自动生成的”activity_main.xml”文件来测试。
2.上一节是直接通过“所见即所得”的预览编辑窗口来添加界面元素的,现在选择编辑窗口底部“Design|Text”中的“Text”来通过代码直接编辑界面。
3.直接把原来的代码删掉,把下面的代码贴到进去。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button2"
        android:layout_gravity="center_vertical" />

</LinearLayout>

4.来说明一下:
LinearLayout是指定通过”android:orientation”属性,把它里面的子View元素(Button、TextView这些)按照水平或者垂直方向排列的view group(ViewGroup的子类)。

另外”android:layout_width”和”android:layout_height”这两个属性则是所有View元素(也就包括ViewGroup了)都必须指定的,用于指定它们的大小。

因为现在这个LinearLayout是这个layout布局的根View,所以它应该填充满整个屏幕,这里是通过“match_parent”给宽高来设置。“match_parent”意思就是这个View应该扩充它的宽或高去匹配它父View的宽或高。

For more information about layout properties, see the Layout guide.
更多关于layout布局参数的信息,可以看官方文档的介绍:Layout API Guide

添加一个EditText

1.还是在刚才操作的那个layout文件,我这里就是”activity_main.xml”。在<LinearLayout>标签里面,定义一个<EditText>,并且把它的id设置为@+id/edit_message
2.定义”layout_width” 和”layout_height”属性为”wrap_content”。
3.定义一个hint属性,并为它赋值一个名为“edit_message”的字符串对象。
最后就是下面这个样子:

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />

下面来解释一下刚才所设置的属性:

  • android:id
    这个属性为View控件提供了一个唯一的id,这样你就可以在app的代码中使用这个控件对象的引用,例如去读取并操作这个对象。(之后会有这部分内容)

The at sign (@) is required when you’re referring to any resource object from XML. It is followed by the resource type (id in this case), a slash, then the resource name (edit_message).

当你从XML中”@”符号 refer to

The plus sign (+) before the resource type is needed only when you’re defining a resource ID for the first time. When you compile the app, the SDK tools use the ID name to create a new resource ID in your project’s gen/R.java file that refers to the EditText element. With the resource ID declared once this way, other references to the ID do not need the plus sign. Using the plus sign is necessary only when specifying a new resource ID and not needed for concrete resources such as strings or layouts. See the sidebox for more information about resource objects.

  • android:layout_width和android:layout_height

  • android:hint

[未完待续]

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android让Fragment加载到Activity中

Android上的界面展示都是通过Activity实现的,Activity实在是太常用了。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,...

Android自动化测试初探

基于UI Automation的自动化测试框架 收藏§ 第一部分:前言 自动化测试或许是众多测试同行都在研究或准备研究的领域。结合自己的能力和公司的状况,选择合适的自动化工具、搭建正确而又高效的框架或许是个永远讨论不完的话题,正如应了那句话,没有最好,只有更好。 个人所在的...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Android系列之Fragment(一)----Fragment加载到Activity当中

参考文章出处: 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3978989.ht...

文章收录1

3.Hive Metastore 代码简析 <td width="760" class=

《Android实例剖析笔记》系列文章

1:Provider 的创建使用 俗话说,“熟读唐诗三百首,不会作诗也会吟”。最近收集了很多Android的示例代码,从这些代码的阅读和实验中学习到很多知识,从而产生写这个系列的打算,目标就是一步步跟着实例进行动手实作,真正从“做”中体会和学习AndroidAndroid自带的一个范例程序:记事本...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)