Android Day2
紧接前一篇日记:
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(调整输入框宽度充满整屏)
Android Day2的更多相关文章
- android开发学习——day2
简单了解了android stdio的操作方式,今天着手于探究活动(Activity) 了解了基本活动与手动创建活动的方法,了解了onCreate()方法,了解了创建和加载页面布局(layout) 新 ...
- 安卓开发学习日记 DAY2——android项目文件
当一个android项目建立时,会有一个目录,以下为目录所包含内容 src:放置java源代码 gen:基本不会做任何更改,放置自动生成的配置文件(主要是R文件) Android4.4.2:放置当前版 ...
- Android 笔记 day2 拨号器
- android开发时间和日期的代码实现工具类(一)
android开发时间和日期工具类的代码实现: package com.gzcivil.utils; import android.annotation.SuppressLint; import an ...
- Android学习路径图
一个PHPer转战Android学习过程: 直接跨过java的学习,原因有我之前看过毕向东和张孝祥的Java基础课程,虽然中间好几次看睡着,但java的环境是能跑起来的.我建议大家如果没有Java基础 ...
- PHPer转战Android的学习过程以及Android学习
原文作者: eoeadmin原文地址: http://my.eoe.cn/shuhai/archive/19684.html-------------------------------------- ...
- Apha冲刺! Day2 - 砍柴
Alpha冲刺! Day2 - 砍柴 今日已完成 晨瑶:没做和主项目相关的事情,除了教队友用gitkraken. 昭锡:学习LitePal对数据库进行操作. 永盛:切换 API 管理平台,继续撰写 A ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- Android SQLiteOpenHelper Sqlite数据库升级onUpgrade
Android Sqlite数据库升级,在Android APP开发之中,非常常见: 在确定原来的数据库版本号之后,在原来数据库版本号+1,就会执行onUpgrade方法,进行数据库升级操作: 在on ...
随机推荐
- android studio导出apk
在android studio导出的apk分为4种,一种是未签名调试版apk,一种是未签名发行版apk,一种是已签名调试版apk,还有一种是已签名发行版apk.以下将介绍这4种apk如何导出. 一.调 ...
- python 调用 java代码
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- 使用模拟Table解决span重叠问题
<div id="test"> <div > <span>adfafadsfadfa</span> <span style=& ...
- 一个不错的Html5 DatePicker控件,主要支持手机端。
原地址不知道在哪了,下载地址 QQ群:616945527 Html5控件wen文件夹中DatePicker.rar
- 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)
Ø 前言 本文主要记录子线程导致 Topshelf 和 Quartz.NET 的 Windows 服务停止的现象,以及使用几种常用子线程的注意事项.因为我们有时可能需要开启多个线程执行复杂的逻辑,如 ...
- 14.Scrapy Shell
Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据. 如果安装了 IPyth ...
- iFrame跨域解决办法
按情境分1.不跨域时2.主域相同.子域不同时3.主域不同不跨域时访问iframe: contentWindow访问父级:parent访问顶级:top a.html <html xmlns=&qu ...
- CF809C Find a car
传送门 luogu 其实这题的某个位置\((i,j)\)的数是\((i-1)\mathrm{xor}(j-1)+1\) 首先一个矩形的答案可以拆成\((x2,y2)-(x1-1,y2)-(x2,y1- ...
- 【blog】Markdown的css样式推荐
参考博客 分享一款Markdown的css样式:https://www.cnblogs.com/zhangjk1993/p/5442676.html 美化Markdown输出的HTML文档:http: ...
- mysql 架构 ~ MHA 总揽
一 简介:MHA相关二 版本 mha0.56 mha0.57 mha0.58三 切换流程 0 主库已不可达 阶段一 1 从集群选出新主,根据新主同步的binlog信息进行拷贝binl ...