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框架的核心配置文 ...
随机推荐
- JavaScript中调皮的undefined
JavaScript中调皮的undefined 在JavaScript中undefined只是一个标识符,不是关键字,这个很不靠谱的标识符还不能像其他符号一样随意使用,一方面是需要它的原始值保持不变, ...
- Vertica系列: 表的分段和分区
Vertica 有两个数据分布的概念, segmentation 和 partition, 至少有下面几个区别: 1.目的方面:segmentation 解决各节点数据倾斜问题, 适用于木桶原理, 数 ...
- js 图片压缩上传(纯js的质量压缩,非长宽压缩)
下面是大神整理的demo,很实用,这里存一下备用,感谢大神! 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下 <!DOCTYPE ht ...
- Java调用WebService就是这么简单
https://cloud.tencent.com/developer/article/1080966
- Handy Collaborator :用于挖掘out-of-band类漏洞的Burp插件介绍
本文我将介绍一个新的 Burp Suite插件Handy Collaborator.Burp Suite Collaborator是添加到Burp Suite的外部服务器,主要用于挖掘那些仅来自外部服 ...
- luogu P4314 CPU监控
传送门 这是个远古巨坑阿qwq 没有历史最大值还是能比较好做的.可能会有一个想法,就是直接维护线段树每个结点出现过的历史最大值,每次最大值变化就更新.但是有个问题:可能一个点能影响历史最大值的标记还没 ...
- Kafka架构简介
一.kafka的架构 1.Broker kafka集群包含一个或者多个服务器,这种服务器就叫做Broker 2.Topic 每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic(逻辑上 ...
- linux如何查看端口号被哪个进程占用
1.lsof -i:端口号 lsof(list open files) 2.netstat -tunlp |grep 端口号 t:tcp u:udp n:拒绝显示别名 l:仅显示listen的服务状态 ...
- mysql存储过程及拼接字符串的用法
DROP PROCEDURE IF EXISTS insert_historytable;DELIMITER //CREATE PROCEDURE insert_historytable()BEGIN ...
- $(function() {....}) ,(function($){...})(jQuery)
$(function() {....}) 是 jQuery 中的经典用法,等同于 $(document).ready(function() {....}),即在页面加载完成后才执行某个函数,如果函数中 ...