开发过Android应用的同学们都知道,Android工程-res-layout资源文件夹下存放着控制view布局的xml文件,我们可以同过getViewById(int i)方法,从XML中构造view及其子类,在这个过程当中,XML文件中的一切layout属性也将被赋予这个view。当然,我们也能够通过代码来为某一个view来设置layout,那是后话。通过对集中layout的分析和比较我发现,Android中AbsoluteLayout与CSS的绝对定位很像,TableLayout与HTML的表格定位很像,而RelativeLayout与CSS的相对定位很像。前两者都已经是老生常谈了,我重点比较一下最后一对,即RelativeLayout与CSS的相对定位(Position:relative)。先看一段XML:
Android番外篇——XML layout与CSS<?xml version="1.0" encoding="utf-8"?>
Android番外篇——XML layout与CSS
<RelativeLayout
Android番外篇——XML layout与CSS    
xmlns:android="http://schemas.android.com/apk/res/android"
Android番外篇——XML layout与CSS    android:layout_width
="fill_parent" android:layout_height="fill_parent"
Android番外篇——XML layout与CSS    android:orientation
="vertical">
Android番外篇——XML layout与CSS    
<RadioGroup android:id="@+id/radioGroup"
Android番外篇——XML layout与CSS        android:layout_width
="fill_parent" android:layout_height="167px"
Android番外篇——XML layout与CSS        xmlns:android
="http://schemas.android.com/apk/res/android"
Android番外篇——XML layout与CSS        android:orientation
="vertical">
Android番外篇——XML layout与CSS        
<RadioButton android:id="@+id/Queen"
Android番外篇——XML layout与CSS            android:layout_width
="wrap_content"
Android番外篇——XML layout与CSS            android:layout_height
="wrap_content" android:text="@string/Queen">
Android番外篇——XML layout与CSS        
</RadioButton>
Android番外篇——XML layout与CSS        
<RadioButton android:id="@+id/Rook"
Android番外篇——XML layout与CSS            android:layout_width
="wrap_content"
Android番外篇——XML layout与CSS            android:layout_height
="wrap_content" android:text="@string/Rook">
Android番外篇——XML layout与CSS        
</RadioButton>
Android番外篇——XML layout与CSS        
<RadioButton android:id="@+id/Knight"
Android番外篇——XML layout与CSS            android:layout_width
="wrap_content"
Android番外篇——XML layout与CSS            android:layout_height
="wrap_content" android:text="@string/Knight">
Android番外篇——XML layout与CSS        
</RadioButton>
Android番外篇——XML layout与CSS        
<RadioButton android:id="@+id/Bishop"
Android番外篇——XML layout与CSS            android:layout_width
="wrap_content"
Android番外篇——XML layout与CSS            android:layout_height
="wrap_content" android:text="@string/Bishop">
Android番外篇——XML layout与CSS        
</RadioButton>
Android番外篇——XML layout与CSS    
</RadioGroup>
Android番外篇——XML layout与CSS    
<Button android:id="@+id/promotion"
Android番外篇——XML layout与CSS        android:layout_width
="wrap_content"
Android番外篇——XML layout与CSS        android:layout_height
="wrap_content" android:layout_below="@id/radioGroup"
Android番外篇——XML layout与CSS        android:text
="@string/promote" />
Android番外篇——XML layout与CSS
</RelativeLayout>

上面一段XML,这是我为Android国际象棋游戏中的一个“兵行底线”编写的Custom Dialog(自定义对话框)的XML layout。在这里简单定义了几个控件(来自于android.wedget包)的一些位置和外观。可以看到,根节点RelativeLayout告诉我们这是相对定位的布局,然后从上至下由一个RadioGroup(内含四个RadioButton)以及一个Button。通过最下面的android:layout_below属性,告诉Button要在radioGroup下面呈现。

这是一个非常简单的属性,在relativeLayout下,还有很多属性,见下表
android:layout_above   Positions the bottom edge of this view above the given anchor view ID. 
android:layout_alignBaseline   Positions the baseline of this view on the baseline of the given anchor view ID. 
android:layout_alignBottom   Makes the bottom edge of this view match the bottom edge of the given anchor view ID. 
android:layout_alignLeft   Makes the left edge of this view match the left edge of the given anchor view ID. 
android:layout_alignParentBottom   f true, makes the bottom edge of this view match the bottom edge of the parent. 
android:layout_alignParentLeft   If true, makes the left edge of this view match the left edge of the parent. 
android:layout_alignParentRight   If true, makes the right edge of this view match the right edge of the parent. 
android:layout_alignParentTop   If true, makes the top edge of this view match the top edge of the parent. 
android:layout_alignRight   Makes the right edge of this view match the right edge of the given anchor view ID. 
android:layout_alignTop   Makes the top edge of this view match the top edge of the given anchor view ID. 
android:layout_below   Positions the top edge of this view below the given anchor view ID. 
android:layout_centerHorizontal   If true, centers this child horizontally within its parent. 
android:layout_centerInParent   If true, centers this child horizontally and vertically within its parent. 
android:layout_centerVertical   If true, centers this child vertically within its parent. 
android:layout_toLeft   Positions the right edge of this view to the left of the given anchor view ID. 
android:layout_toRight   Positions the left edge of this view to the right of the given anchor view ID. 

我相信大家的英文水平,这段从API上抄下来的东西我就不翻译了。但是可以看出来,只要设置上面的属性(不一定要全部),我们可以轻松规定一个控件(View)的在相对定位下的显示行为。同时RelativeLayout是从layout上继承下来的,因此layout的很多属性也可以在这里使用,包括:android:layout_height, android:layout_width,

相关文章:

  • 2021-12-09
  • 2022-03-05
  • 2022-12-23
  • 2021-05-27
  • 2021-09-30
  • 2022-12-23
  • 2021-08-08
猜你喜欢
  • 2022-02-10
  • 2021-12-27
  • 2021-08-14
  • 2021-06-08
  • 2021-05-31
相关资源
相似解决方案