安卓学习笔记(2)


在学习安卓中,最先接触的便是它的七大布局和一些控件了,本篇就来整理两个最常用的线性布局(LinearLayout)和相对布局(RelativeLayout)的笔记。

因为自己也是这几个礼拜刚接触安卓,以下笔记难免有些错误或者说法不够专业,也请大家多多包涵 =v=

线性布局(LinearLayout)

  1. 线性布局一定要通过 orientation 的属性来控制控件以水平(horizontal)或竖直(vertical)的方式进行排列(默认使用vertical),并且只能依次排列,如果有控件超出容器后就不会被显示。
  1. 我们可以通过layout_width和layout_height中的wrap_content或match_parent属性来控制这个布局的大小,前者的布局大小会根据内容大小而改变,而后者是直接占满它剩下内容的大小。

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        
    </LinearLayout>
  2. layout_gravity和gravity来控制位置,其中gravity是控制内容组件,layout_gravity是面向父级控制自己位置,另外layout_gravity和gravity可以用”|”来并用,比如以下代码可以让控件居中左对齐。

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical"
    android:gravity="center|left"
    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A"
        />
    </LinearLayout>
  3. padding和layout_margin,分别用于指定内边距和外边距,单位是”dp”,一般用于细微调整距离,不建议大量使用,不然将难以适配不同分辨率的手机.

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center|left"
        android:paddingLeft="30dp"
        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"
            android:layout_marginLeft="30dp"
            />
    </LinearLayout>
  4. layout_weight:权重(比例分配),也就是等比例划分,这是线性布局独有的,也是很重要的一个属性,它可以按比例分配布局或空间所占得大小,要使用这个属性先要把android:layout_width=”0dp”,再设置layout_weight=多少,下面代码就是两个按钮按1:2分配空间。

        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center"
        >
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="A"
    
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="B"
            />
    </LinearLayout>
        

相对布局(RelativeLayout)

相对布局相比线性布局就要难一些,相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的。

  1. 相对布局同时也拥有线性布局的layout_gravity和gravity、padding和layout_margin 用法也与前面的线性布局相同,但是它没有orientation属性,因此只能通过相对于某个布局和空间来布局。

  2. layout_alignParent和layout_align这两个属性是相对布局独有的,分别代表与父容器定位和根据兄弟组件定位,可以指定布局或控件的位置。

    <RelativeLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           >
           <TextView
               android:id="@+id/tv_center"
               android:layout_width="150dp"
               android:layout_height="100dp"
               android:layout_centerInParent="true"
               android:text="center"
               android:textSize="32sp"
               android:background="#ffffcc00"
               android:gravity="center" />
    
           <TextView
               android:layout_width="60dp"
               android:layout_height="20dp"
               android:text="alignTop"
               android:gravity="center"
               android:background="#ffa6a5aa"
               android:layout_alignTop="@id/tv_center"/>
    
    
       </RelativeLayout>
  3. layout_centerXXX可以在父视图内居中显示,它的属性有

  • layout_centerInParent 相对于父视图完全居中
  • layout_centerHorizontal 相对于父视图水平居中
  • layout_centerVertical 相对于父视图垂直居中
    <RelativeLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
    
           >
    
           <Button
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerInParent="true"
               android:text="InParen"
               android:textAllCaps="false"
    
               />
    
           <Button
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerHorizontal="true"
               android:text="Horizontal"
               android:textAllCaps="false"
               />
    
           <Button
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerVertical="true"
               android:text="Vertical"
               android:textAllCaps="false" />
       </RelativeLayout>
  1. layout_XXX 可以指定它与其他空间的相对位置,这个是绝对布局的核心,但一定要给控件给定id属性。
  • layout_toLeftOf:控件的左边
  • layout_toRightOf:控件的右边
  • layout_below:控件的下面
  • layout_above:控件的上面
    <RelativeLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           >
    
           <Button
               android:id="@+id/btn_above"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="top"
               android:layout_centerInParent="true"
               android:layout_above="@id/btn_center"
               android:textAllCaps="false"
               />
    
           <Button
               android:id="@+id/btn_below"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerHorizontal="true"
               android:text="below"
               android:layout_below="@id/btn_center"
               android:layout_centerInParent="true"
               android:textAllCaps="false"
               />
    
           <Button
               android:id="@+id/btn_left"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerInParent="true"
               android:layout_toLeftOf="@id/btn_center"
               android:text="left"
               android:textAllCaps="false" />
           <Button
               android:id="@+id/btn_right"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="right"
               android:layout_toRightOf="@id/btn_center"
               android:layout_centerInParent="true"
               android:textAllCaps="false" />
           <Button
               android:id="@+id/btn_center"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="center"
               android:layout_centerInParent="true"
               android:textAllCaps="false" />
       </RelativeLayout>

以上就是线性布局(LinearLayout)和相对布局(RelativeLayout)基本属性的笔记了


文章作者: 落樱
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 落樱 !
评论
  目录