`
cleen
  • 浏览: 10832 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android的Layout整理

阅读更多
1.FrameLayout
FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。

FrameLayout is the simplest type of layout object. It's basically a blank space on your screen that you can later fill with a single object — for example, a picture that you'll swap in and out. All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot specify a different location for a child view. Subsequent child views will simply be drawn over previous ones, partially or totally obscuring them (unless the newer object is transparent).
FrameLayout默认填充widget等在左上角,然后后面的控件遮住前面的,比如说有两个TextView,Text内容分别是I am textview 1 和
I am textview 2 看到的效果会如下:
?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="htHTMLtp://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 1"
    />
    <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 2"
    />
   
</FrameLayout>
2.LinearLayout
LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。
LinearLayout 还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。
下面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置weight(默认为 0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。

在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置 android:baselineAligned="false",来关闭这个设置。

LinearLayout aligns all children in a single direction — vertically or horizontally, depending on how you define the orientation attribute. All children are stacked one after the other, so a vertical list will only have one child per row, no matter how wide they are, and a horizontal list will only be one row high (the height of the tallest child, plus padding). A LinearLayout respects margins between children and the gravity(right, center, or left alignment) of each child.
LinearLayout是Android sdk创建project时的默认Layout,支持两种方式,默认是垂直vertical的线性layout,另一个是水平horizontal方向的线性排列。
效果如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 1"
    />
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 2"
    />
  
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="10px"
    android:layout_height="fill_parent"
    android:text="I am textview 1"
    />
    <TextView 
    android:layout_width="10px"
    android:layout_height="wrap_content"
    android:text="I am textview 2"
    />
   
</LinearLayout>

3.RelativeLayout
RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。
这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有 width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。

RelativeLayout lets child views specify their position relative to the parent view or to each other (specified by ID). So you can align two elements by right border, or make one below another, centered in the screen, centered left, and so on. Elements are rendered in the order given, so if the first element is centered in the screen, other elements aligning themselves to that element will be aligned relative to screen center. Also, because of this ordering, if using XML to specify this layout, the element that you will reference (in order to position other view objects) must be listed in the XML file before you refer to it from the other views via its reference ID.


<?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:padding = "10px"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 1"
/>
    <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="I am textview 2"
    android:layout_marginLeft = "150px"
    />
   <Button
   android:id="@+id/Button02" android:layout_width="wrap_content" android:text="Ok"
   android:layout_height="wrap_content"
   android:layout_marginLeft = "240px"
   android:layout_marginTop = "40px"
   ></Button>
   <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:text="Cancel" android:layout_height="wrap_content"
   android:layout_marginLeft = "160px"
   android:layout_marginTop = "40px"
   ></Button>



</RelativeLayout
4.AbsoluteLayout
AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

5.TableLayout
TableLayout将子元素的位置分配到行或列中。android的一个TableLayout由许多的TableRow组成,每个TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout容器不会显示row、cloumns或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个 View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图中的虚线代表不可视的单元格边框。

列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。

TableLayout positions its children into rows and columns. TableLayout containers do not display border lines for their rows, columns, or cells. The table will have as many columns as the row with the most cells. A table can leave cells empty, but cells cannot span columns, as they can in HTML.
TableRow objects are the child views of a TableLayout (each TableRow defines a single row in the table). Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be composed of a variety of View objects, like ImageView or TextView objects. A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).
TableLayout和HTML的<table>基本上类似,还提供TableRow class, 直接等价与<tr>
比如说要做成一个类似下面的HTML叶面
I am textview1 I am textview2
[OK button]
[Cancel button]
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
   
>
<TableRow android:background="@drawable/a1">
    <TextView
        android:text="I am textview 1" />
    <TextView 
        android:paddingLeft = "20px"       
        android:width = "200px"
       
        android:text="I am textview 2"
    />
    </TableRow>
    <TableRow android:background="@drawable/a1">
   <Button
   android:id="@+id/Button02"  android:text="Ok"
     ></Button>
   <Button android:id="@+id/Button01" android:text="Cancel"
   ></Button>

</TableRow>

</TableLayout>
分享到:
评论

相关推荐

    Android Layout ID Converter

    《Android Layout ID Converter:提升Android Studio开发效率的神器》 在Android应用开发中,界面布局的设计是至关重要的一环。为了使界面元素之间能够正确交互,开发者通常需要为每个UI组件分配一个唯一的ID。手动...

    android tab 切换 整理

    本文将深入探讨如何实现Android应用中的Tab切换,主要基于标题和描述提供的关键词"android tab 切换 整理"。我们将讨论Tab布局的实现方式,包括使用TabHost、ViewPager和Android Design Support Library的TabLayout...

    android整理侧滑导航

    android:layout_height="match_parent"&gt; &lt;!-- 主内容视图 --&gt; android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /&gt; &lt;!-- 导航抽屉 --&gt; ...

    Android 面试整理 最新

    Activity的布局通常定义在一个XML文件中,存储在项目的`res/layout`目录下。 #### 二、Activity的生命周期 Activity的生命周期是指从Activity创建到销毁的整个过程,主要包括以下几个关键方法: - **onCreate...

    java,android知识整理总结

    3. Layout设计:XML布局文件的使用,以及各种视图控件(如TextView、EditText、Button等)的配置和交互。 4. 数据存储:SQLite数据库、SharedPreferences、文件存储以及ContentProvider的使用。 5. Service和...

    android代码整理,Android中的aidl接口及案例说明中的源码整理,客户端代码

    在这个“android代码整理”中,我们将深入探讨AIDL接口以及相关的客户端代码实现。 首先,AIDL文件本质上是接口定义文件,它使用类似Java的方法声明来定义服务端提供的方法。例如,一个简单的AIDL接口可能如下所示...

    Android SDK开发范例大全 【PDF完整高清版】【公司内部推荐资料】

    4. **View与Layout**:Android UI构建基于View和Layout。书中有许多实例,展示了如何自定义视图,创建各种布局,如线性布局、相对布局、网格布局等。 5. **数据存储**:Android提供了多种数据存储方式,如SQLite...

    Android Activity+Fragment选项卡整理

    android:layout_height="match_parent"&gt; &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" ...

    android知识点整理 android开发工程师必备资料文档

    ### Android知识点整理:Android开发工程师必备资料文档 #### 一、项目目录结构解析与资源管理 在Android开发中,合理的项目目录结构对于提高代码可读性和维护性至关重要。以下是几个关键目录及其作用: 1. **Src...

    Android技术面试资料整理

    ### Android技术面试资料整理 #### 1. Android的四大组件及其作用 - **Activity**:是Android应用程序中负责用户交互的主要部分。一个Activity通常对应着一个屏幕,展示UI元素并与用户进行交互。当一个Activity被...

    安卓源码 Android Layout UI 首页加载过渡动画,星期变化动画.rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    android知识点整理

    `layout`目录存放XML布局文件,例如`main.xml`。 5. `Values`: 这里可以定义字符串、颜色、尺寸等资源。例如,在`strings.xml`中定义应用中的文字资源。 6. `AndroidManifest.xml`: 项目清单文件,它是每个Android...

    刚开始学习android笔记,和一些控件的整理

    ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, data); listView.setAdapter(adapter); ``` 9. **Dialog**:对话框,用于弹出提示或收集信息。 - 示例代码: `...

    源码 Android Layout UI 首页加载过渡动画,星期变化动画(002).zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    Android开发学习笔记(整理)

    Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...

    源码 动画效果 Android Layout UI 首页加载过渡动画,星期变化动画(001).zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    动画效果 Android Layout UI 首页加载过渡动画,星期变化动画(程序源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    Android小知识整理(学习Android的好资料)

    在Android的世界里,开发者需要掌握一系列的关键知识点,才能在这一平台进行高效且创新的应用开发。..."Android小知识整理"这份资料应该包含了这些主题的详细讲解,对于初学者和进阶开发者都是很好的学习资源。

Global site tag (gtag.js) - Google Analytics