Android 布局 中实现适应屏幕大小及组件滚动
要实现如图的布局:
这是在eclipse可视化窗口中的截图,但实际运行在Android设备上可能出现的问题有:
(1):当编辑图1中的最后一个EditText时,输入法的编辑界面会把底部的Button顶上去,遮挡住了最后一个EditText;
(2):图2中的控件太多,以至于无法一屏全部显示,导致底部的Button被挤下去,又无法滚动控件,导致无法操作Button;
解决方案:
以下为布局文件代码:
图 1:
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="match_parent"
- android:layout_above="@+id/linearLayout1"
- android:fillViewport="true" >
- <TableLayout
- android:id="@+id/table"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:stretchColumns="1" >
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/product_name" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/product_name" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/product_id" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/product_id" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/raise_company" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/raise_company" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="80dp"
- android:layout_height="wrap_content"
- android:text="@string/about_info" />
- <EditText
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:hint="@string/about_quality_website" >
- </EditText>
- </TableRow>
- </TableLayout>
- </ScrollView>
- <LinearLayout
- android:id="@+id/linearLayout1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:paddingBottom="0dp" >
- <Button
- android:layout_width="70dp"
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:text="@string/edit" />
- <Button
- android:layout_width="70dp"
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:text="@string/refer" >
- </Button>
- </LinearLayout>
- </RelativeLayout>
图 2:
- <?xml version="1.0" encoding="utf-8"?>
- <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/view"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <ScrollView
- android:id="@+id/view1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- <TableLayout
- android:id="@+id/table"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:stretchColumns="1" >
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/product_name" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/product_name" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/product_id" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/product_id" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/current_data" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/current_data" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/raise_company" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/raise_company" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/raise_man" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/raise_man" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/feed_name" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/feed_name" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/feed_element" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/feed_element" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/medicine" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/medicine" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/health_condition" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/health_condition" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/water_quality" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/water_quality" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/water_temperature" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/water_temperature" >
- </EditText>
- </TableRow>
- <TableRow>
- <TextView
- android:layout_width="60dp"
- android:layout_height="wrap_content"
- android:text="@string/record" />
- <EditText
- android:layout_height="wrap_content"
- android:hint="@string/record" >
- </EditText>
- </TableRow>
- </TableLayout>
- </ScrollView>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_below="@+id/view1" >
- <Button
- android:layout_width="70dp"
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:text="@string/edit" />
- <Button
- android:layout_width="70dp"
- android:layout_height="wrap_content"
- android:layout_weight="2"
- android:text="@string/refer" >
- </Button>
- </LinearLayout>
- </RelativeLayout>
- </ScrollView>
需要说明的是:图一结构为:
图二结构为:
图二没有遮挡的问题,所以没有去修改它
结束语:关于Android中布局文件的滚动和控件遮挡问题已经描述和解决,作为一篇记录学习过程的文章,也希望能够帮助别人一起学习。
附上的代码,如果你喜欢,欢迎拿去,顺便,如果你把它完善的根据完美漂亮,也希望你反馈到这里 ^_^
Android 布局 中实现适应屏幕大小及组件滚动的更多相关文章
- 在Eclipse Android中设置模拟器屏幕大小
在Eclipse Android中设置模拟器屏幕大小是本文要介绍的内容,主要是来了解并学习Eclipse Android中模拟器的设置,具体关于Eclipse Android内容的详解来看本文. 方法 ...
- Android布局中的空格以及占一个汉字宽度的空格的实现
在Android布局中进行使用到空格,以便实现文字的对齐.那么在Android中如何表示一个空格呢? 空格: 窄空格: 一个汉字宽度的空格: [用两个空格( )占一个汉字的宽度时,两个空格比 ...
- Android布局中的空格以及占一个汉字宽度的空格,实现不同汉字字数对齐
前言 在Android布局中进行使用到空格,以便实现文字的对齐.那么在Android中如何表示一个空格呢? 空格: (普通的英文半角空格但不换行) 窄空格: (中文全角空格 (一个中文宽度)) ...
- android布局中使用include及需注意点
在android布局中,使用include,将另一个xml文件引入,可作为布局的一部分,但在使用include时,需注意以下问题: 一.使用include引入 如现有标题栏布局block_header ...
- Android布局中的layout_weight和weightSum属性的详解及使用
由于Android设备的尺寸大小不一,种类繁多,当我们在开发应用的时候就要考虑屏幕的适配型了,尽可能让我们的应用适用于主流机型的尺寸,这样我们的应用不会因为尺寸不同而不美观,解决屏幕适配问题的方法有很 ...
- Android针对不同的手机屏幕大小设计图片资源与编码
注:本文转载于:http://blog.csdn.net/welovesunflower/article/details/7930248 一些术语 Screen Size 屏幕尺寸: 实际的物理尺寸, ...
- 【转】在Android布局中使用include和merge标签
内容转自:http://fengweipeng1208.blog.163.com/blog/static/21277318020138229754135/ 在我们开发android布局时,经常会有很多 ...
- Android布局中涉及的一些属性
Android:gravity属性 线性布局常见的就是利用LinearLayout进行布局,其中有个比较重要的属性就是android:gravity,在官方文档中是这么描述这个属性的:指定一个元素怎么 ...
- android 布局中 layout_gravity、gravity、orientation、layout_weight
线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...
随机推荐
- iOS修改声明为readonly的属性值
本文讨论的是,对于类中声明为 readonly 的属性值,我们就不可以修改其值了么?如何可以,那么如何修改呢? 为了便于说明,定义一个 ACLStudent 的类: ACLStudent.h @int ...
- Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
一.Masonry 是基于Jquery插件,用于对CSS布局的可移动层进行重新布局.Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石 ...
- 粒子系统1:简介&工具使用
直接使用工具来感受一下粒子系统的强大威力吧. 网络上有很多粒子编辑器,大多数都是收费的.magicalsoft提供了一个免费的粒子编辑器(该工具目前只有mac版本),界面如下: 我们将针对这个编辑器来 ...
- Hidden Markov Model
Markov Chain 马尔科夫链(Markov chain)是一个具有马氏性的随机过程,其时间和状态参数都是离散的.马尔科夫链可用于描述系统在状态空间中的各种状态之间的转移情况,其中下一个状态仅依 ...
- eclipse 总是提示文件下载
在首选项->phpeclipse web development ->brower preview default 勾选掉
- struts2.1笔记03:AOP编程和拦截器概念的简介
1.AOP编程 AOP编程,也叫面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容.利用A ...
- Objective-C基础笔记一
这里开始了我OC旅程 花了8天的时间粗略的学习了新知识Objective-C(简称OC),虽然只是学习了其中的基础部分,但经过这一周的学习也算是入门了.对面向对象的封装.继承.多态以及其中所包含的方法 ...
- WIN2003服务器IIS下如何开启GZIP压缩
在上一篇文章黑客流谈到了关于网页打开速度对SEO的影响,其中提到了网页开启Gzip压缩的好处,接下来我来和大家分享一下WINDOWS系统IIS服务器下如何开启Gzip压缩. 首先我们来了解一下什么是G ...
- MapReduce按照两个字段对数据进行排序
按照k2排序,要求k2必须是可以比较的,即必须实现WritableComparable接口. 但是如果还想让别的字段(比如v2中的一些字段)参与排序怎么办? 需要重新定义k2....把需要参与排序的字 ...
- 关于启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!