您的位置:首页 > 移动开发 > Android开发

Android教程学习1-创建一个简单的用户界面

2013-10-16 12:46 519 查看

学习内容:

使用线性布局
添加一个文本输入框
增加字符串资源
添加按钮
利用权重值让输入框充满整个屏幕宽度

创建一个简单的用户界面

Android的图形用户界面使用ViewViewGroup的层级类进行创建。View类是通用的UI窗体小部件,比如按钮或者文本框,而ViewGroup

是用于定义子View如何布局的不可视容器,比如网格(grid)布局和垂直列表(vertical
list)布局。

Android提供了对应于ViewViewGroup子类的XMl查询表,你可以在XML里使用层级视图元素创建自己的UI



图1:展示了ViewGroup类在布局里形成的分支并且包含View

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

使用线性布局

在资源目录res/layout中打开activity_main.xml文件(Android项目新建时都默认包含此文件)
注意:在默认情况下,activity_main.xml中包含一个RelativeLayout布局和TextView文本框。首先,需要删除TextView文本框,把RelativeLayout布局
替换为LinearLayout布局,然后添加android:orientation属性并设置为"horizontal".
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"	>
</LinearLayout>

LinearLayout布局是一个View容器(ViewGroup的一个子类),用于水平放置或者垂直放置子视图的部件,由属性android:orientation来设定方向。线性
布局里的子布局按照XML里设定的顺序显示在屏幕上。
另外的两个属性android:layout_width和android:layout_height,对于所有的部件都需要对这两个属性进行设置以指定它们的大小。
在这里因为线性布局是整个视图的根布局,所以对于宽和高都应该是充满整个屏幕的,指定为fill_parent。
注意:从Android2.2开始,为了更好的使用,fill_parent被改为match_parent。因为当我们把一个子部件设置为fill_parent之后,该部件不是占有同等级
部件剩余的空间,而是和同等级部件重叠在一起。相反,使用match_parent则不会出现重叠的现象。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

添加一个文本输入框

在线性布局里,添加一个元素就可以创建一个用户可编辑的文本框,EditText类属于View的一个用于展示可编辑的文字的子类。
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/about"	/>
<!-- android:hint 没有输入之前的提示内容 -->

关于一些属性的说明:
Android : id
这里定义的是View的唯一标识符,你可以在程序的代码里进行引用,你可以对这个类进行读和修改的操作。
当你想从XML里使用资源类的时候必须使用"@"符号,紧随"@"之后的是资源的类型(这里指id),一个斜杠,然后就是资源的名字。"+"号只是当你第一次定义资源ID的
时候需要。这里是告诉SDK此资源ID需要被创建出来。在应用程序被编译之后,SDK就可以直接使用ID值edit_message在项目gen/R.java文件中创建一个新的标识符,
这个标识和就和EditText关联起来了。一旦资源ID被创建了,其他资源如果引用这个ID就不再需要"+"号了。"+"只有在定义一个新的资源ID的时候才需要,而在定义诸如
string和layouts这些有实际内容的资源是则不需要。

添加一个按钮

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"	/>

宽和高被设置为"wrap_content:,这时按钮占据的大小就是按钮里文本的大小。这个按钮不需要指定android:id的属性,因为在Activity代码里不被引用到。

让输入框充满整个屏幕的宽度

LinearLayout使用权重值的属性android:layout_weight来设置部件的大小。
可以根据每一个部件所占的空间来指定权重值的大小,它的总数是由同等级的部件决定的。
例如某饮料的配方:“两份伏特加酒 一份咖啡利口酒”, 意思就是这个饮料中伏特加酒占了三分之二。例如,你设置一个View的权重是2,另一个View的权重是1,那么总数
就是3,这时第一个View占据2/3的空间,第二个占1/3的空间。如果再加入第三个View,权重设为1,那么第一个View会占1/2的空间,剩余的被另外2个View平凡。
对于所有的View默认的权重值是0,如果你只设置了一个View的权重大于0,那么这个View将占据去别的View本身所占据的空间的多有剩余空间。
因此这里设置EditView的权重为1,保持button没有权重的状态,是EditView能够占据除了按钮之外的所有空间。

<EditText
android:layout_weight="1"
android:layout_width="0dp"
... />

将EditView的宽度设置为0dp。如果设置为"wrap_content"作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时因为设置了权重,所以系统自动会占据剩余空间,
EditView的宽度最终成了不起作用的属性。

运行结果:



参考:http://wiki.eoe.cn/page/Building_a_Simple_User_Interface
           http://developer.android.com/training/basics/firstapp/building-ui.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: