您的位置:首页 > 其它

关于FragmentLayout布局的位置问题

2016-04-14 20:32 274 查看
关于FragmentLayout布局的位置问题

1.首先来看看android:layout_gravity和android:gravity的使用区别。

android:gravity:

这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,

android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左部。

android:layout_gravity:

这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:layout_gravity="left"属性时,表示该Button按钮将位于界面的左部。



<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<Button
android:layout_width="120dp"
android:layout_height="120dp"
android:gravity="right"
android:background="#123456"
android:text="Button1"/>
<Button
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="right"
android:background="#123456"
android:text="Button2"
/>


</LinearLayout>

3.特殊情况

当我们采用LinearLayout布局时,有以下特殊情况需要我们注意:

(1)当android:orientation="vertical" 时,android:layout_gravity只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal是生效的。

(2)当android:orientation="horizontal" 时,android:layout_gravity只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical
是生效的。

接下来讲一下framelayout,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="fill_parent">

<Button
android:layout_width="180dp"
android:layout_height="180dp"
android:background="#ffff00"
android:text="Button1"/>

<Button
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#123456"
android:text="Button2"/>
<Button
android:layout_width="60dp"
android:layout_height="60dp"
android:background="#ff0000"
android:text="Button3"/>
</FrameLayout>

如何让这三个button不是重叠在一起的而是错开的?

我们来添加一个属性android:layout_gravity="bottom",android:gravity="right"



<Button
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#123456"
android:gravity="right"
android:text="Button2"/>

<Button
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom"
android:background="#ff0000"
android:text="Button3"/>

这里我的做出了两个效果,一个是字Button在控件的内部位置变化,一个是相对于父控件的位置变化的红色Button

android:layout_gravity:

这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。

android:gravity:

这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。

那么如何让红色button即在下面,又居中呢?

还是通过

android:layout_gravity="center_horizontal|bottom"



当你需要自己写多个View的时候,在View里面已经完成了你的布局,那么这些View只需要一个容器放置,就可以使用FrameLayout了。虽然用其他的布局也可以,但是用最简单的不是更省系统资源么。

举个例子

做Viewpager的时候可能需要制作带有小圆点的滑动引导界面,那么小圆点该如何布置在

在图片或者说是button上呢?



<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="35dip"

android:layout_gravity="bottom"
android:gravity="center"
>
<View
android:id="@+id/dot_1"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal"/>

<View
android:id="@+id/dot_2"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal"/>

<View
android:id="@+id/dot_3"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal"/>
</LinearLayout>

</FrameLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: