android的一个app代码怎么写,编写一个简单的安卓app界面
安卓的用户界面都是由View以及ViewGroup的子类对象组成的。View对象一般是想button或者textview这样的控件,ViewGroup对象是一个看不见的View容器,它定义了如何布局容器中装入的子View,比如是网格布局还是垂直布局等。
android提供了通过xml文件编写的方式来操作这些View和ViewGroup,所以尽管View和ViewGroup比较复杂,但是我们其实多数时候是在xml中操作他们的,难易程度就跟网页设计差不多。
本文将会指导你建立一个包含了文本编辑框和按钮的xml布局。后续的教程中,我们会为为按钮增加点击的响应事件。
创建一个LinearLayout
打开 res/layout/目录下的activity_main.xml文件。
注意:在eclispe下,默认打开一个xml文件显示的是xml文件的预览效果,而不是代码。本文是直接在xml代码里面操作,因此你需要点击一下底部的tab菜单中的 activity_main.xml,这样才可以编辑xml。
你创建的BlankActivity 工程模版其实是已经有了一个默认的布局的,但是他是相对布局,由RelativeLayout 包含一个文本显示框TextView 组成。
我们要将其改成线性布局。
首先删除TextView元素,同时将RelativeLayout替换成LinearLayout,然后增加android:orientation属性并设置成horizontal(水平)。
完成上面的步骤之后activity_main.xml应该是这样的:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
LinearLayout 是一个ViewGroup(即ViewGroup的子类),LinearLayout 中的子元素要么是单一的横向排列,要么是垂直排列,这取决于其android:orientation属性。子元素排列的先后顺序跟xml文件中出现的顺序是一致的。 android:layout_width 和 android:layout_height这两个属性是所有视图组件都需要的属性,缺少其中任何一个在运行代码的时候都会报错。这两个属性决定了该View的大小。
因为在activity_main.xml文件中LinearLayout是是最顶层的View,所以我们要将app界面充满整个屏幕的话应该将layout_width 和layout_height设置成"match_parent",顾名思义,match_parent就是充满父View的整个空间,而所有app的顶级View都是充满屏幕的。(新版本都是用match_parent,也可以用fill_parent来代替,但是官方不推荐这么写)。
关于 layout的其他属性,请参考谷歌官方文档。
添加一个文本编辑框
在xml中创建一个文本编辑框控件是用标签,就跟其他的控件一样,你需要为它增加必要的属性设置。如下:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
关于这些属性的解释:
android:id
id是一个view的唯一标识,通过id,你可以在代码中引用这些视图对象,读取或者修改他们。当我们在xml中引用资源文件的时候,必须要加上@符号。@符号紧跟着的是资源的类型(这里资源类型就是id)然后是"/"分隔符,最后是资源名称。所以android:id="@+id/edit_message"的意思就是引用一个名字叫edit_messag的id类型资源。
注意这里的id之前有一个+号。当我们第一次定义一个资源文件id的时候需要+,在编译app的时候,会在我们的 gen/R.java文件中生成一个资源文件id,id一旦被定义之后,其他队该id的引用都不再需要+号了。
android:layout_width 和 android:layout_height与直接给这两个属性赋具体的值不同,"wrap_content"表示该view占据的空间大小取决于自身。如果值为"match_parent",那么view的大小将充满其父容器。
android:hint
这个属性设置了文本输入框EditText在没有任何文字的时候显示给用户的默认值。hint属性的值在这里并没有直接给出,而是通过对资源文件string的引用来获得字符串。当我们的资源文件中还没有定义名叫edit_message的字符串的时候,直接编译是会报错的。下面我将会教你如何添加string资源文件。
添加字符串String资源文件
如果你想在用户界面中添加字符串,你应该将该字符串放在专门的资源文件中。这样做的好处是,当你需要修改UI中涉及到的字符串时,你只需修改一个文件就可以了,而不必在复杂的代码中寻找。而且,将字符串分离出来的好处是这样更容易实现对多语言的支持。默认情况下,你新建一个工程总是会产生res/values目录,目录下有strings.xml文件。打开该文件,添加一个name为“edit_message”,value值为"Enter a message."的字符串。因为我们稍后会在button上显示send一词,因此顺便我们再添加一个name为“button_send”,value值为"Send"的字符串。代码如下:<?xml version="1.0" encoding="utf-8"?>
My First App
Enter a message
Send
Settings
MainActivity
至于对多种语言的支持方法,可以参考google官方其他文章。
添加一个按钮
上面我们在LinearLayout中添加了一个文本输入框EditText,紧接着我们通过如下代码在EditText的后面添加一个按钮:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
由于在activity中并没有引用button的地方,所以我们这里没有添加id属性。layout_width 和layout_height属性设置成wrap_content意味着按钮的大小取决于自身的内容。
将文本编辑框的宽度设置成适合屏幕的宽度
到现在为止,EditText 和Button的大小都是wrap_content,也就是自身有多大,就显示多大。如图
这种设置对于button来说很合适,但是并不适合editText控件,因为editText是用来输入文字的,editText的自身内容是可变的,wrap_content只能保证其大小适应了最初该有的大小,当输入文字更长的时候,editText就满足不了了,所以最好还是设置成最大限度的充满屏幕的效果(除button外的剩余部分)。在LinearLayout中,我们可以通过weight权重来做到,也就是 android:layout_weight属性。
android:layout_weight就是决定如何分配剩余空间。举个例子,如果你给一个view的layout_weight设为2,另外一个View的的layout_weight设为1,那么剩余的空间就被划分成了三分,第一个View占两份,也就是2/3.
默认所有View的layout_weight都为0,因此如果你只给某个View设置了layout_weight大于0的值,那么他将得到所有视图在分配完空间之后的全部剩余空间。所以这里我将EditText的layout_weight设为1,而按钮保持默认的状态。
android:layout_weight="1"
... />
注意:虽然在这种情况下,一般我们是将editText的宽度设为0,
android:layout_width="0dp"
为什么要这么做呢?其实是效率方面的考虑,如果使用"wrap_content",系统会先计算editText所需的空间,然后得出editText和button占据后还剩余多少空间,如果还有剩余,则将剩余宽度补给editText。如果我设置为0,editText部分的空间就不需要计算了。所以你应该这样写代码:
android:layout_weight="1"
android:layout_width="0dp"
... />
修改了之后那么将会是如下效果:
整个布局文件的代码:<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
运行代码就能看到效果了。
android的一个app代码怎么写,编写一个简单的安卓app界面相关推荐
- js php 手机验证码代码怎么写,JS实现简单短信验证码界面
1.要实现短信验证码界面,首先要有一个文本框,旁边是按钮,点击时开始倒计时. 2.先创建文本框和按钮,按钮设置对应的id,然后在js中通过id获取按钮这个元素,对其执行操作.同时应设置倒计时时间以及计 ...
- Java黑皮书课后题第8章:*8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积。编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积
*8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积.编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...
- Java黑皮书课后题第4章:*4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数。如果月份非法则显示出错信息
*4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数.如果月份非法则显示出错信息 题目 题目概述 破题 运行示例 代码 题 ...
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转
有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度. 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转 ...
- 12.15有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数
有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.编写一个程序,从命令行得到一个整数,判断该数是不是回文数 package Text6;import java.util.Scanner; ...
- 有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
package task08;import java.util.Scanner;/** 8.有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.* 编写一个程序,从命令行得到一个整数,判断 ...
- 跟我一起编辑直播源码,直播app代码怎么写
直播行业现在是越发的火热,人们对于视频直播的热情也是久盛不衰,云豹直播的技术人员在这里就教大家编写一个小小的视频直播片段. Windows Media Player 系列(不同面板样式) 综合型: i ...
- python 打印自己代码_如何编写一个打印自身源代码的程序
一个程序,在没有任何外部输入的情况下,打印自身的源代码,这类程序在英文里有一个专门的称呼,叫做Quine,之所以叫这个名字,是为了纪念美国哲学家及逻辑学家Willard Van Orman Quine ...
- 简单的安卓app小程序代码_开发一款APP大概需要多少钱?
伴随着近几年移动互联网的飞速发展和智能手机的普及,为了更好地进行品牌营销和线上交易,越来越多的企业想要开发属于本身的手机app,所有企业在开发APP之前最关心的题目就是"开发一款手机APP到 ...
最新文章
- volatile超详细讲解
- mantis1.18升级1.2X方法
- 每天坚持不懈的写软文,得到的几点心得感悟
- 故障码123401_电力系统规划设计对电力工程设计的应用
- 程序大佬和菜鸟的区别,太准确了!
- P4127 [AHOI2009]同类分布(数位dp)
- python安全攻防---信息收集---whois查询
- gcc的警告提示信息
- 美国进步派民主党众议员寻求大幅扩大拜登第二项支出计划规模
- 《必玩》!学习大师们的游戏设计经验,激发你的游戏创造力!
- unity read files 从ini文件
- 发现一本好书--《Windows用户态程序高效排错 》
- 用HTML实现旋转魔方!很有意思
- 无胁科技-TVD每日漏洞情报-2022-7-12
- 家用计算机设置网络,教您电脑如何设置宽带连接
- 互联网赚钱:一个抖音小项目,分析下,人人都能做
- python教你如何把自己的微信变成机器人
- 工业相机(面阵和线阵)和镜头选型
- Android 实现人脸识别
- 国家信息分类和编码标准