如果按照之前的布局设置,那么输入框和按钮组件的大小就会是刚好满足它们的内容的。如图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内容)的更多相关文章

  1. Jmeter创建一个简单的http接口用例

    1.新建线程组 添加->Threads(Users)->线程组 线程组用来模拟用户进程. 2.添加http信息头管理器 添加->配置元件->http信息头管理器 Systemi ...

  2. Android官方教程翻译(3)——创建一个简单的用户界面

    转载请注明出处:http://blog.csdn.net/dawanganban/article/details/9839523 Building a Simple User Interface 创建 ...

  3. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

  4. 如何创建一个简单的C++同步锁框架(译)

    翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...

  5. 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)

    近期看老罗视频,做了一个简单的用户注冊系统.用户通过网页(JSP)输入用户名.真名和password,Servlet接收后通过JDBC将信息保存到MySQL中.尽管是个简单的不能再简单的东西,但麻雀虽 ...

  6. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  7. 如何创建一个简单的Visual Studio Code扩展

    注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...

  8. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  9. 如何创建一个简单的struts2程序

    如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...

随机推荐

  1. 使用List和Map遇到得空指针异常

    如题,经常遇到同类得问题,因为集合在使用之前必须先new一个对象. private List<Orderdatil> orderdatilList=new ArrayList<Ord ...

  2. C#中ICollection介绍

    ICollection 接口是 System.Collections 命名空间中类的基接口,ICollection 接口扩展 IEnumerable,IDictionary 和 IList 则是扩展 ...

  3. 细说tomcat之session持久化探秘

    业务场景:通常,我们会在会话级别存放一些参数,期望在session生命周期内,可以一直取得保存在session中的指定数据:而只要session过期或者失效,则需要执行重新登录等操作.但是!我们对于这 ...

  4. nohup命令执行退出后进程退出

    nohup命令常常用于让进程在后台执行.但是如果仅仅是执行: nohup command & 之后直接关闭终端的话,会发现之前已经启动进程也会退出.解决办法:nohup command &am ...

  5. Mac 下搭建环境 homebrew/git/node.js/npm/vsCode...

    主要记录一下 homebrew/git/node.js/npm/mysql 的命令行安装 1. 首先安装 homebrew  也是一个包管理工具: mac 里打开终端命令行工具,粘下面一行回车安装br ...

  6. 【poj1741】Tree 树的点分治

    题目描述 Give a tree with n vertices,each edge has a length(positive integer less than 1001). Define dis ...

  7. Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update

    Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update Package :openjdk-8 CVE ID: ...

  8. rem+js响应式布局的设置

    直接调用代码即可,不过不同屏幕宽度要求会不同,相应修改一下就ok了 // rem响应式布局 (function(){ var html=document.querySelector('html') h ...

  9. 360doc个人图书馆解决复制问题

    360doc个人图书馆在复制的时候会弹出如下页面: 对于我们程序员来说很容易就可以推断,可能是在复制的时候写了事件什么的. 估计是这些个: document.oncopy或者document.body ...

  10. 闭包可以存储变量(下标) 小demo

    点击每一行弹出其下标