1.
确保 Autoconnect 关闭。工具栏中的提示应为 Turn On Autoconnect (因为它现在处于关闭状态)。
添加一个按钮
图 6.按钮被限制在文本框及其基线的右侧
- 在 Palette 窗口中,点击左侧窗格中的 Widgets,然后将 Button 拖放到设计编辑器中靠近右侧的位置。
- 从按钮左侧创建一个约束条件,将其限制在文本框的右侧。
- 要在水平对齐中约束视图,您需要在文本基线之间创建一个约束条件。因此,请点击按钮,然后点击 Edit Baseline, 它将显示在设计编辑器中选定视图的正下方。基线锚点显示在按钮内部。点击并按住此锚点,然后将其拖动到文本框中显示的基线锚点。
结果应如图 6 中的屏幕截图所示。
注:您还可以使用顶部或底部边缘创建水平对齐,不过,按钮在其图像周围包含内边距,因此如果您按照这种方式对齐这些视图,视觉对齐将是错误的。
2.
更改界面字符串
要预览界面,请点击工具栏中的 Select Design Surface 并选择 Design。请注意,文本输入使用“Name”预填充,按钮标记为“Button”。现在,您将更改这些字符串。
- 打开 Project 窗口,然后打开 app > res > values > strings.xml。
这是一个字符串资源文件,您应在这个文件中指定所有界面字符串。这样您可以在一个位置管理所有界面字符串,让字符串的查找、更新和本地化变得更加容易(与您的布局或应用代码中的硬编码字符串相比)。
- 点击编辑器窗口顶部的 Open editor。这将打开 Translations Editor,它为添加和编辑您的默认字符串提供了一个简单的界面,并且有助于保持您的所有已翻译字符串井然有序。
图 7.用于添加新字符串的对话框
点击 Add Key, 以文本框“提示文本”的形式创建新字符串。- 为键名输入“edit_message”。
- 为值输入“Enter a message”。
- 点击 OK。
- 再添加一个名称为“button_send”并且值为“Send”的键。
现在,您可以为每个视图设置这些字符串。点击标签栏中的 activity_main.xml 以返回布局文件,然后按照以下步骤添加字符串:
- 点击布局中的文本框,如果 Attributes 窗口在右侧还未显示,请点击右侧边栏上的 Attributes 。
- 找到 text 属性(当前设为“Name”)并删除值。
- 找到 hint 属性,然后点击文本框右侧的 Pick a Resource 。在出现的对话框中,双击列表中的 edit_message。
- 现在,点击布局中的按钮,找到 text 属性,点击 Pick a Resource, 然后选择 button_send。
3.
选择两个视图(点击一个,按住 Shift 并点击另一个),然后右键点击任何一个视图并选择 Chain > Create Horizontal Chain。
链是两个或更多视图之间的双向约束条件,它让您可以采用一致的方式放置链接的视图。
4.
添加向上导航
您的应用中不是主入口的每个屏幕(所有不是主屏幕的屏幕)都应提供导航,以便用户在应用栏中点按“向上”按钮后可以返回应用层次结构中的逻辑父屏幕。
您需要做的全部工作是在 AndroidManifest.xml
文件中声明哪个 Activity 是逻辑父项。因此,请打开 app > manifests > AndroidManifest.xml 处的文件,找到 DisplayMessageActivity
的 <activity>
标记,然后将其替换为以下代码:
<activity android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" >
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
Android 系统现在会在应用栏中自动添加“向上”按钮。
4.
每种类型的组件有不同的启动方法:
- 您可以通过将
Intent
传递到startActivity()
或startActivityForResult()
(当您想让 Activity 返回结果时)来启动 Activity(或为其安排新任务)。 - 您可以通过将
Intent
传递到startService()
来启动服务(或对执行中的服务下达新指令)。 或者,您也可以通过将Intent
传递到bindService()
来绑定到该服务。 - 您可以通过将
Intent
传递到sendBroadcast()
、sendOrderedBroadcast()
或sendStickyBroadcast()
等方法来发起广播; - 您可以通过在
ContentResolver
上调用query()
来对内容提供程序执行查询。
5.