码迷,mamicode.com
首页 > 移动开发 > 详细

安卓开发中的4中基本布局

时间:2017-03-25 14:09:54      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:match   str   top   ota   sch   code   方向   let   module   

1.LinearLayout(线性布局)

(1)如果LinearLayout的排列方向是horizontal,内部的控件就绝对不能将宽度指定为match_parent,因为这样的话,单独一个控件会将整个水平方向占满,其他控件就没有可以放置的位置了。

同理如果LinearLayout的排列方向是vertical,内部控件就不能将高度指定为match_parent

(2)android:layout_gravity用于指定控件在在布局中的对齐方式(horizontal只能指定竖直方向上的对齐方式,vertical只能指定水平方向上的对齐方式)

    android:gravity用于指定文字在控件中的对齐方式

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"     <!--代表控件排列顺序,horizontal表示水平,vertical表示竖直-->
    android:layout_width="match_parent"
    android:layout_height="match_parent">

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/button1"
         android:layout_gravity="top"
         android:text="button1" />

    <Button
        android:id="@+id/button2"
        android:layout_gravity="center"
        android:text="button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:layout_gravity="bottom"
        android:text="button3"/>
</LinearLayout>

(3)android:layout_weight

将两个控件的宽度都指定为0,这时控件的宽度由layout_weight决定,这里表示EditText和Button将屏幕分成1:1的两部分

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

    <EditText
        android:id="@+id/input_message"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:hint="Type something"
        />
    <Button
        android:id="@+id/send"
        android:layout_width="0dp"
        android:layout_height="wrap_content" 
        android:layout_weight="1"
        android:text="Send"
        />
</LinearLayout>

改进适配的Button写法

   <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send"
        />

 

2.RelativeLayout相对布局

(1)相对于父布局定位

android:layout_alignParentLeft="true" 和父布局左对齐

android:layout_centerInParent="true" 和父布局居中对齐

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

      <Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:text="Button 1"/>
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button 2"/>
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Button 3"/>
    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 4"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
         />
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 5"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        />
</RelativeLayout>

 (2)相对于控件定位

android:layout_above="@+id/button3" 一个控件在另一个控件上方

android:layout_toLeftOf="@+id/button3" 一个控件在另一个控件左侧

android:layout_alignLeft="@+id/button3" 一个控件左边缘与另一个控件左边缘对齐

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Button 3"/>
      <Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@+id/button3"
          android:layout_toLeftOf="@+id/button3"
          android:text="Button 1"/>
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button3"
        android:layout_toRightOf="@+id/button3"
        android:text="Button 2"/>

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 4"
        android:layout_below="@+id/button3"
        android:layout_toLeftOf="@+id/button3"
         />
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 5"
        android:layout_below="@+id/button3"
        android:layout_toRightOf="@+id/button3"
        />
</RelativeLayout>

 

3.FrameLayout帧布局

所有控件都默认摆在左上角,可以使用 layout_gravity属性来指定控件在布局中的对齐方式

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
      <TextView
          android:id="@+id/text_view"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="This is TextView"
          android:layout_gravity="left"/>
    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:layout_gravity="right"/>
</FrameLayout>

 

4.百分比布局

百分比布局是对相对布局和帧布局的功能扩展

百分百布局定义在了support库当中,需要在项目的build.gradle中添加百分比库的依赖

打开app/build.gradle文件,在dependencies闭包中添加以下内容

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
    })
    compile ‘com.android.support:appcompat-v7:25.2.0‘
    compile ‘com.android.support:percent:25.2.0‘ //加这一句
    compile ‘com.android.support.constraint:constraint-layout:1.0.2‘
    testCompile ‘junit:junit:4.12‘
}

 

<android.support.percent.PercentFrameLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-autop"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button1"
        android:text="Button 1"
        android:layout_gravity="left|top"
        app:layout_widthPercent="50%"
        app:layout_heightPercent="50%"
        />
    <Button
        android:id="@+id/button2"
        android:text="Button 2"
        android:layout_gravity="right|top"
        app:layout_widthPercent="50%"
        app:layout_heightPercent="50%"
        />
    <Button
        android:id="@+id/button3"
        android:text="Button 3"
        android:layout_gravity="left|bottom"
        app:layout_widthPercent="50%"
        app:layout_heightPercent="50%"
        />
    <Button
        android:id="@+id/button4"
        android:text="Button 4"
        android:layout_gravity="right|bottom"
        app:layout_widthPercent="50%"
        app:layout_heightPercent="50%"
        />
</android.support.percent.PercentFrameLayout>

 

安卓开发中的4中基本布局

标签:match   str   top   ota   sch   code   方向   let   module   

原文地址:http://www.cnblogs.com/syyy/p/6616628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!