Android-创建一个简单的用户接口-(补day2内容)
如果按照之前的布局设置,那么输入框和按钮组件的大小就会是刚好满足它们的内容的。如图1.

图1.输入框和按钮宽度设置为”wrap_content”
这样的设置是可以满足按钮的,但不能满足输入框的要求,因为用户可能会输入比默认内容更多的东西。所以,输入框的大小最好设置为刚好占满没使用的屏幕宽度。你可以通过在LinearLayout的weight属性来设置,即指定 android:layout_weight 属性。
应该指定一个不同视图之间的空白间隔值,每一个元素与另外一个元素之间都应该存在这样的空白消耗。这就像某种调和酒的不同成分一样“2份伏特加,1份咖啡利口酒”代表着有2/3的是伏特加。比如,如果你把一个视图的大小设置为2,另外一个设置为1,总的大小就是3,所以第一个视图将占满2/3的空间,而第二个视图占据剩下的空间。如果你增加第3个视图并设置比重值为1,那么第一个视图现在就占据1/2的控件,其他两个各占1/4。
默认比重对所有视图来说都是0,所以如果指定任意大于0的比重到任何一个视图,这个视图都将将会占满所有其他视图占用之后剩下的空余空间。现在,让EditText占满整个界面的剩余空间,设置EditText元素的比重为1按钮不设置。
<EditText
android:layout_weight="1"
... />
为了增加布局效率,当指定比重参数时,你应该设置元素宽度为0dp。设置宽度为0可以增加效率是因为使用”wrap_content”作为宽度时系统需要计算宽度值,但这个值缺失无效的,因为比重值需要另外一个宽度计算来填充剩余空间。
<EditText
android:layout_weight="1"
android:layout_width="0dp"
... />
图3展示了设置比重值之后的文本框状态。

图3.文本框组件占了所有比重,所以占满了LinearLayout布局的所有剩余空间。
到目前为止,布局文件应该如下:
<?xml version="1.0" encoding="utf-8"?>
<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">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
</LinearLayout>
这个布局已经应用到通过SDK工具在创建的默认的Activity类中。所以可以直接运行应用查看效果。
1)在Eclipse中可以点击Run
按钮运行
2)在命令行中运行,输入:
ant debug
adb install bin/MyFirstApp-debug.apk
下一课将学习为按钮增加相应,读取文本框的内容并发送到另外一个activity中。
Android-创建一个简单的用户接口-(补day2内容)的更多相关文章
- Jmeter创建一个简单的http接口用例
1.新建线程组 添加->Threads(Users)->线程组 线程组用来模拟用户进程. 2.添加http信息头管理器 添加->配置元件->http信息头管理器 Systemi ...
- Android官方教程翻译(3)——创建一个简单的用户界面
转载请注明出处:http://blog.csdn.net/dawanganban/article/details/9839523 Building a Simple User Interface 创建 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...
- 如何创建一个简单的C++同步锁框架(译)
翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)
近期看老罗视频,做了一个简单的用户注冊系统.用户通过网页(JSP)输入用户名.真名和password,Servlet接收后通过JDBC将信息保存到MySQL中.尽管是个简单的不能再简单的东西,但麻雀虽 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...
- 如何创建一个简单的Visual Studio Code扩展
注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- 如何创建一个简单的struts2程序
如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...
随机推荐
- 【1】Java中double转BigDecimal的注意事项
项目遇到该问题 先上结论:不要直接用double变量作为构造BigDecimal的参数. 线上有这么一段Java代码逻辑: 1,接口传来一个JSON串,里面有个数字:57.3. 2,解析JSON并把这 ...
- GNU Screen Usage
分屏: 1.在终端输入screen命令 2.Ctrl+a 然后shift+s 上下分屏,切换到下方Ctrl+a tab然后新建一个window(Ctrl+a c) 3.切换到上方,Ctrl+a tab ...
- Java面试题系列(五)
序言 基本数据类型数组和引用数据类型数组的区别 基本数据类型数组: 其中存储的元素为基本类型数据. 引用类型数组: 元素是对象,其中存储的是对象的地址值. 引用数据类型的数组使用规定长度的方式进行初始 ...
- mysql 创建事件
mysql 事件说明: 创建事件CREATE EVENT 的语法如下:CREATE EVENT[IF NOT EXISTS] ------------------------------------- ...
- postfix 指定用户限制指定域名收发
main.cf 配置示例: smtpd_restriction_classes = local_in_only, local_out_only local_in_only = check_recipi ...
- 第28月第23天 lineFragmentPadding
1.lineFragmentPadding https://blog.csdn.net/lwb102063/article/details/78748186
- proxysql 系列 ~ 高可用架构
一 整体架构二 proxysql层 proxysql+keepalived对外提供vip 1 这里有一点要注意,虽然keepalived有脑裂危险,但是对于向proxysql这种无状态中 ...
- 《Java编程思想第四版》附录 B 对比 C++和 Java
<Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...
- java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型
- Callable的用法示例
//Runnable是执行工作的独立任务,但是它不返回任何值.在JavaSE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表的是从方法call()中返回的值,并且必须使用Execut ...