紧接前一篇日记:
2.增加文本域
在<LinearLayout>中增加<EditText>元素,无格式设置的时候如下。
<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" />
大致属性解释:
adroid:id
表明在该界面中唯一的标识。在后台代码中可以通过引用这个标识,来读取或者操作这个对象。
@标记:在XML涉及任何资源对象时都必须添加该标记。在该标记的后面紧跟资源类型(在示例1中是id),斜线,资源名称(此处为edit_message)。
+标记:只在第一次定义某资源ID的时候,需要写在资源类型前。当你编译程序的时候,SDK工具会自动在gen/R.java使用ID名在项目中新建一个资源ID指向EditText元素。当该元素申明过一次之后,在其他地方对该ID的引用就不再需要写上加号(+)标记了。使用加号标记时必须是在新建一个资源ID,并且不需要在一个具体资源(像String、layout等)上前添加。
PS:
关于资源对象:
一个资源对象只是一个简单的与某个应用程序资源相关联唯一整数命名。(应用程序资源包括:位图、布局文件、文字等)。
每个资源都在gen/R.java文件中定义有相应的资源对象。你可以使用在R类中的对象名来引用你的资源,比如当你需要为anroid:hint 属性指定一个字符串值。
你也可以创建一个任意的ID值,用在视图的android:id属性上,就可以通过这个ID在其他的代码里调用这个视图了。
SDK工具会在你每次编译程序的时候自动生成的R.java。所以不应该去手动修改R.java的代码。
如果需要了解更多信息,可以查看Providing Resources.
android:layout_width 和android:layout_height
"wrap_content" 不可以指定宽度和高度,只能按照输入内容进行自动调整,最大范围为该视图允许的内容范围。如果用"match_parent"代替的话,那么这个EditText
将会覆盖整个屏幕,因为它将和父级窗口整个LinearLayout一样大。关于布局的了解跟多的可以查看Layouts 指南。
android:hint
为一个空的文本域设置默认字符串。在单独的文件中定义一个字符串值,并通过ID "@string/edit_message"去引用这个值,而不是使用硬编码。因为这是一个具体的资源,而不是某个定义,所以不需要写加号(+)。但你也必须定义一个字符串资源,目前会发现这个引用处于编译错误(红色下划线)的状态。你将会在下一部分教程中通过定义字符串解决这个问题。
NOTE:
此字符串资源使用了与EditText相同的名称作为元素的ID:edit_message。但是,引用资源范围是区分资源类型(如ID或字符串)的,所以使用相同的名称不会引起冲突。
3.Add String Resources(添加字符串资源)
当需要在用户界面上增加文字时,应该把每一个字符串都指定为一个资源。字符串资源允许在一个单独的地方管理所有的界面文字,这样便可以更容易找到和更新这些文字。字符串的具体化还可以通过提供替代定义为每个字符串资源以不同的语言本地化您的应用程序。
默认情况下,android工程字符串资源文件都在res/values/strings.xml
.增加一个新的字符串命名"edit_message" ,设置值为"Enter a message"。现在你可以删除"Hello world "了。
同时增加一个值为"Send" 命名为 "button_send"的字符串,你将会在后面使用。
增加好后,strings.xml大概如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">My First App</string> <string name="edit_message">Enter a message</string> <string name="button_send">Send</string> <string name="action_settings">Settings</string> <string name="title_activity_main">MainActivity</string> </resources>
要了解更多的关于为不同语言将应用进行本地化,可以查看Supporting Different Devices 。
4.Add Button(添加按钮)
在布局中的EditText 元素后增加一个Button元素,
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" />
高度和宽度设置为 "wrap_content"后,这个按钮就的大小将只是按钮文字显示所需要的大小。按钮也不需要anroid:id属性,因为它不会被操作代码引用。
5.Make the Input Box Fill in the Screen Width(调整输入框宽度充满整屏)