粗谈Android中的对齐

在谈这个之前先啰嗦几个概念。

基线:书写英语单词时为了规范书写会设有四条线,从上至下第三条就是基线。基线对齐主要是为了两个控件中显示的英文单词的基线对齐,如下所示:

  

Start:在看API的时候经常会有Start对齐,End对齐,Start对齐主要是为了能够在不同的textDirection(文本排列方向)的时候更好的对齐的一种方式,在textDirection为LTR(从左到右)时Start对齐就等于左对齐,当textDirection为RTL(从右到左)时Start对齐就等于右对齐。End同理。

文本对齐

  通过gravity来实现view的文本对齐方式.先看下官方解释。

  android:gravity:Specifies how to align the text by the view‘s x-
and/or y-axis when the text is smaller than the view.

Must be one
or more (separated by ‘|‘) of the following constant values.

  意思是说,当文本比view小的时候指定如何通过view的x、y轴线去对齐。这个属性的值必须是下面给出的一个或多个,如果是多个则用‘|‘隔开。

  可以用的属性有:topbottomleftrightcenter_verticalfill_verticalcenter_horizontalfill_horizontalcenterfillclip_verticalclip_horizontalstartend

  这些属性中就谈两类,其他的类似,一个是上下左右这种基本类型的,还有一种是组合的,比如左下角,这是为:left|bottom。

  左对齐:

  


1 <TextView
2 android:layout_width="100dip"
3 android:layout_height="60dip"
4 android:layout_marginTop="10dip"
5 android:background="#ffff33"
6 android:gravity="left"
7 android:text="left"
8 />

  左下角:


1  <TextView
2 android:layout_width="100dip"
3 android:layout_height="60dip"
4 android:layout_marginTop="10dip"
5 android:background="#ffff33"
6 android:gravity="left|bottom"
7 android:text="leftbottom"
8 />

  效果图如下所示:

  

LinearLayout对齐

  gravity:Specifies how an object should position its
content, on both the X and Y axes, within its own bounds.

Must be one or more (separated by ‘|‘) of the following constant
values.

    意思是,规定了一个对象以什么样的方式根据x、y轴去摆放自己的内容。这个属性的值必须是下面给出的一个或多个,如果是多个则用‘|‘隔开。

    可以用的属性有:topbottomleftrightcenter_verticalfill_verticalcenter_horizontalfill_horizontalcenterfillclip_verticalclip_horizontalstartend。

    同样,这些属性中就谈两类,其他的类似,一个是上下左右这种基本类型的,还有一种是组合的,比如左上角,这是为:left|bottom。

  居右对齐:

  


 1 <LinearLayout
2 android:layout_width="match_parent"
3 android:background="#0000ff"
4 android:layout_height="0dip"
5 android:gravity="right"
6 android:layout_weight="1" >
7
8 <Button
9 android:layout_height="wrap_content"
10 android:layout_width="wrap_content"
11 android:text="right"
12 />
13
14 </LinearLayout>

  居左下角对齐:


 1 <LinearLayout
2 android:layout_width="match_parent"
3 android:background="#ffff33"
4 android:layout_height="0dip"
5 android:layout_marginTop="10dip"
6 android:gravity="left|bottom"
7 android:layout_weight="1" >
8
9 <Button
10 android:layout_height="wrap_content"
11 android:layout_width="wrap_content"
12 android:text="left_bottom"
13 />
14 </LinearLayout>

  效果图如下:

  

RelativeLayout对象

  RelativeLayout主要用到相对位置的对齐,主要属性有以下几种

  





























layout_above

该布局文件的底部设置到指定ID的对象的上方
layout_below

layout_alignBaseline

该布局文件的基线与指定ID的对象的基线对齐

layout_alignBottom

将该布局文件的底部域指定的ID的对象的底部对齐

layout_alignLeft

layout_alignRight

layout_alignTop

layout_alignStart

该布局文件的开始(左边)与指定ID对象的开始(左边)位置对齐

layout_alignEnd

该布局文件的结束(右边)与指定ID对象的结束(右边)位置对齐

layout_toLeftOf

该布局文件的右边放到指定ID对象的左边

类似:layout_toStartOf

layout_toRightOf

该布局文件的左边放到指定ID对象的右边

layout_centerHorizontal

如果设置为true,则将该布局文件中的自对象设置为水平居中
layout_centerInParent

layout_centerVertical

layout_alignParentLeft

如果设置为true,则将该布局文件的左边与其父对象的左边对齐
layout_alignParentRight
layout_alignParentStart
layout_alignParentTop

layout_alignParentEnd

layout_alignParentBottom

  拿出两个例子来简单说明下,一个是将一个button放到另一个button右边,另外一个是将一个button放到另一个button的右下角

  右边:

  


 1  <RelativeLayout
2 android:layout_width="match_parent"
3 android:layout_height="wrap_content" >
4
5 <Button
6 android:id="@+id/btnStand"
7 android:layout_width="wrap_content"
8 android:layout_height="wrap_content"
9 android:text="标准物1" />
10
11 <Button
12 android:layout_width="100dip"
13 android:layout_height="wrap_content"
14 android:layout_toRightOf="@id/btnStand"
15 android:text="right->标准物1" />
16 </RelativeLayout>

  右下角:


 1 <RelativeLayout
2 android:layout_width="match_parent"
3 android:layout_height="wrap_content" >
4
5 <Button
6 android:id="@+id/btnStand2"
7 android:layout_width="wrap_content"
8 android:layout_height="wrap_content"
9 android:text="标准物2" />
10
11 <Button
12 android:layout_width="100dip"
13 android:layout_height="wrap_content"
14 android:layout_below="@id/btnStand2"
15 android:layout_toRightOf="@id/btnStand2"
16 android:text="right_bottom->标准物2" />
17 </RelativeLayout>

  效果图如下所示:

后记:

  这次谈的内容比较粗,仅作抛砖引玉用。

原文连接:http://www.cnblogs.com/luoaz/p/3719767.html

Demo下载地址:https://github.com/xiaoai-opensource/alignDemo

粗谈Android中的对齐,布布扣,bubuko.com

时间: 2024-12-29 12:01:13

粗谈Android中的对齐的相关文章

浅谈android中仅仅使用一个TextView实现高仿京东,淘宝各种倒计时

今天给大家带来的是仅仅使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.最近公司一直加班也没来得及时间去整理,今天难得休息想把这个分享给大家,只求共同学习,以及自己后续的复习.为什么会想到使用一个TextView来实现呢?因为最近公司在做一些优化的工作,其中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的,实现的代码冗余比较大,故此项目经理就说:小宏这个就交给你来优化了,并且还要保证有一定的扩展性,当时就懵逼了.不知道从何处开始

浅谈android中只使用一个TextView实现高仿京东,淘宝各种倒计时

今天给大家带来的是只使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.近期公司一直加班也没来得及时间去整理,今天难得歇息想把这个分享给大家.只求共同学习,以及自己兴许的复习. 为什么会想到使用一个TextView来实现呢?由于近期公司在做一些优化的工作,当中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的.实现的代码冗余比較大.故此项目经理就说:小宏这个就交给你来优化了.而且还要保证有一定的扩展性,当时就懵逼了.不知道从何处開始

浅谈android中手机联系人字母索引表的实现

实际上字母索引表的效果,可以说在现在的众多APP中使用的非常流行,比如支付宝,微信中的联系人,还有购物,买票的APP中选择全国城市,切换城市的时候,这时候的城市也就是按照一个字母索引的顺序来显示,看起来是很方便的.其实这种字母索引表的效果最开始是出现在微信的联系人中.因为觉得这种效果功能在今后的项目中可以说是非常常见,可能会用的上,所以准备来波博客讲述一下实现的原理,一来方便以后自己复习,二来如果能够帮助一些android路上奋斗小伙伴也是蛮有意义的. 下面我们先来看下效果图, 看完效果图后我们

浅谈android中图片处理之图形变换特效Matrix(四)

今天,我们就来谈下android中图片的变形的特效,在上讲博客中我们谈到android中图片中的色彩特效来实现的.改变它的颜色主要通过ColorMatrix类来实现. 现在今天所讲的图片变形的特效主要就是通过Matrix类来实现,我们通过上篇博客知道,改变色彩特效,主要是通过ColorMatrxi矩阵的系数,以及每个像素点上所对应的颜色偏移量.而今天的图形变换与那个也是非常的类似.它是一个3*3矩阵,而颜色矩阵则是一个4*5的矩阵.在这个3*3矩阵中则表述出了每个像素点的XY坐标信息.然后通过修

浅谈android中的异步加载一

1.为什么需要异步加载. 因为我们都知道在Android中的是单线程模型,不允许其他的子线程来更新UI,只允许UI线程(主线程更新UI),否则会多个线程都去更新UI会造成UI的一个混乱有些耗时的操纵(例如网络请求等),如果直接放到主线程中去请求的话则会造成主线程阻塞,而我们系统有规定的响应时间,当响应的时间超过了了阻塞的时间就会造成"Application No Response",也就是我们熟知的ANR错误解决上述问题的时候:我们一般使用的是线程或者线程池+Handler机制如果线程

浅谈android中的ListView合集系列之解决ScrollView和ListView嵌套冲突(一)

相信大家都已经可以熟练使用ListView和GridView,大神们估计都在使用RecyclerView了.如果还在使用ListView,你肯定有这样的一个深刻的感受,那就是在做一个APP的时候使用ListView和GridView很频繁,并且经常会遇到一个页面中除了有ListView或GridView可能还有一些其他的内容,但是可能内容很多,你第一时间就会想到让它整体滑动即可,那就是在总的布局外面包裹一个ScrollView.也就是出现了ScrollView中嵌套一个ListView的场景,或

浅谈android中图片处理之色彩特效处理ColorMatrix(三)

在android开发中对图片处理很是频繁,其中对图片的颜色处理就是很常见的一种.我们经常看到一些类似美图秀秀,美颜相机的app,为什么那么黑的人拍出来是确实那么地白呢?长的那么那个(丑)的人,用美颜相机拍出来的看起来也有那么回事(拍出来就感觉挺漂亮).就像网上有个段子,有钱的都去韩国了,没钱都用ps了.韩国的就去整形,中国的就用ps.这些话虽然是调侃,但是从某种程度上来说像类似美图秀秀,美颜相机app确实挺受大家欢迎.但是你是否曾想过它这种效果,它是怎么实现的吗?你是否曾想过它的原理是什么吗?所

浅谈Android中的MVP

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51745798 本文出自:[顾林海的博客] 前言 为什么使用MVP,网上有很多说法,最主要就是减轻了Activity的责任,相比于MVC中的Activity承担的责任太多,因此有必要讲讲MVP. MVP入门 在MVC框架中,View是可以直接读取Model模型中的数据的,Model模型数据发生改变是会通知View数据显示发生相应的改变.而在MVP中Model和View之

浅谈android中加载高清大图及图片压缩方式(二)

这一讲就是本系列的第二篇,一起来聊下关于android中加载高清大图的问题,我们都知道如果我们直接加载原图的话,一个是非常慢,需要等待一定时间,如果没有在一定的时间内给用户响应的话,将会极大影响用户的体验.另一个是如果你的手机内存小的话,可能会直接崩溃.这也就是直接加载高清原图问题.遇到这些问题很容易想到的一点就是图片压缩,本篇文章也就是讲述图片压缩方式来实现加载高清大图的效果.但是现在问题就来了,通过上篇博客我们知道,手机的分辨率有很多,如何保证我同一张图片在不同分辨率的手机上能适当的压缩比例