LinearLayout中layout_gravity控制控件位置
来源:互联网 发布:导出来的sql带双引号 编辑:程序博客网 时间:2024/04/24 11:17
无数次在linearlayout中利用layout_gravity拖动控件的时候,它都不听使唤。一直也不知道是什么原因,其实什么原理机制我不是很有兴趣了解,我只是很想知道到底要怎么做才能让layout_gravity自由摆放我的控件。
下面是我常遇到的情况,horizontal的三个texiview,我分别用layout_gravity让他们左中右显示,但是很明显他们不受layout_gravity的控制。这个时候其实用FrameLayout或者RelativeLayout也是相当方便,后面会介绍这两种方法的使用
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:background="@drawable/font_gray_bg" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="left" android:text="left" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="center" android:text="center" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="right" android:text="right" android:textSize="16sp" /></LinearLayout>
布局显示如下
然后我们把LinearLayout的horizontal改为vertical,把高度调为200dp看一下效果
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="200dp" android:layout_marginTop="100dp" android:background="@drawable/font_gray_bg" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="left" android:text="left" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="center" android:text="center" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="right" android:text="right" android:textSize="16sp" /></LinearLayout>
。。。这样一改确实达到了左中右显示的效果。但是出现了阶梯的感觉,这是因为vertical属性控制了控件是自上向下依次显示的,一行显示一个控件。
所以设置linearlayout为水平时,layout_gravity的left,center,right的水平属性是没有效果的,但是top,center,bottom会有效,而设置为vertical时,则它的top,center,bottom会失效,left,center,right会有效果。
这是由于设置linearlayout为水平的时候,他就默认了控件是水平一个挨着一个显示,因而只能控制垂直方向的属性了。垂直的linearlayout控制控件水平显示我也试过了,确实是这样。
所以要想实现左中右显示,可以用FrameLayout和RelativeLayout,也可以用Linearlayout的weight属性三等分(三等分还需每个textview嵌套一个linearlayout才是实现)
其实要显示这种水平方向的几个控件,用FrameLayout更好控制,而且在xml文件中嵌套过多的linearlayout会降低效率
下面用FrameLayout显示
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:background="@drawable/font_gray_bg" > <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="left" android:text="left" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="center" android:text="center" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_gravity="right" android:text="right" android:textSize="16sp" /></FrameLayout>
很显然,framelayout很轻易就达到了要求
下面用RelativeLayout
<?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:layout_marginTop="100dp" android:background="@drawable/font_gray_bg" > <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_alignParentLeft="true" android:text="left" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_centerInParent="true" android:text="center" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="30dip" android:layout_alignParentRight="true" android:text="right" android:textSize="16sp" /></RelativeLayout>
同样的RelativeLayout也可以完成,但是其中没有layout_gravity属性了,用了layout_alignParentLeft,layout_centerInParent,layout_alignParentRight三个属性
可见不是什么都用LinearLayout才是好的,还是要根据不同的情况合适使用才行。
- LinearLayout中layout_gravity控制控件位置
- android:layout_gravity="right"控制LinearLayout中控件居右显示失败
- android:layout_gravity="right"控制LinearLayout中控件居右显示失败
- android学习总结(16.08.23)LinearLayout(线性布局)中控件的摆放位置——orientation,gravity,layout_gravity的关系
- Linearlayout 中layout_gravity不起作用问题
- LinearLayout layout_gravity
- 关于Linearlayout中控件设置为其底部的问题,android:layout_gravity="bottom"没效果
- 安卓LinearLayout中layout_gravity属性
- LinearLayout中layout_gravity和gravity的区别
- android中LinearLayout中的orientation, gravity, layout_gravity
- UI系列__关于LinearLayout中layout_gravity不能居中
- Android布局中LinearLayout的android:layout_gravity="bottom"不起作用
- LinearLayout 的layout_gravity使用
- Android控件位置控制
- LinearLayout中的控件居中的控制
- linearlayout 中listview 挤占其后view位置
- 控制ASP.NET2.0中控件的位置
- RelativeLayout和LinearLayout中的子控件layout_gravity="center"的问题解决
- 实现按钮式单选
- VC2013 ArcGIS Engine 10.0开发环境搭建
- 网络故障排查
- hdu 4930 Fighting the Landlords 多校第六场 斗地主纯模拟
- 【算法导论学习-008】算法时间复杂度的计算
- LinearLayout中layout_gravity控制控件位置
- dump_stack 和 trigger_all_cpu_backtrace
- [Linux]常用命令
- c++ Constructor FAQ 续
- 从HTML代码中提取文字,去掉HTML的标记
- 负载均衡(LB)详解
- 最大流-Edmonds-Karp算法
- 必须使用“控制面板”中的“打开或关闭Windows 功能”安装或配置microsoft.NET framework 2.0 SP2
- ul li