Android 开发 UI布局

线性布局LinearLayout

就是将所有的孩子放在一条直线上。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />

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

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />
</LinearLayout>
  • 线性布局摆放的方向

我们可以通过orientation来修改LinerLayout的布局的摆放方向,它的值有两个,一个是horizontal(水平),另一个是vertical(竖直)

  • 线性布局的权重

  当有些时候,我们需要平均地给孩子分配宽度或高度,我们就可以使用权重;
  有时候不平均,但点占的宽或高成比例,我们也可以使用权重。
  android:layout_width="0th"
  android:layout_weight="1"
  将宽度设为零,权重设为1,即可平均。
  权重就是把所有的数字加起来,上面的占的比例就是大小的比例。

  • 相对布局RelativeLayout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="中间" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="右上角" />

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="左上角" />

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:text="左下角" />

    <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:text="右下角" />

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/center_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="中间" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/center_button"
        android:text="我在中间的右边"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@id/center_button"
            android:text="我在中间的左边"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_above="@id/center_button"
        android:text="我在中间的上面"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/center_button"
        android:text="我在中间的下面"/>
</RelativeLayout>

  • 绝对布局AbsoluteLayout

依靠x、y控制自己的位置

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="147dp"
        android:layout_y="167dp"
        android:text="Button" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="61dp"
        android:layout_y="279dp"
        android:text="Button" />
</AbsoluteLayout>

  • 表格布局TableLayout
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="1" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="2" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="3" />
    </TableRow>
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="4" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="5" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="6" />
    </TableRow>
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="7" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="8" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="9" />
    </TableRow>
</TableLayout>

原文地址:https://www.cnblogs.com/wsq666/p/12253644.html

时间: 2024-10-14 12:17:38

Android 开发 UI布局的相关文章

Android开发 UI布局

Android开发 UI布局一.线性布局LinearLayout 什么是线性布局? 其实呢,线性布局就是把所有的孩子摆在同一条线上 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_paren

Android开发-动态布局小记

android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记.动态布局主要是比较灵活,可以很快的在代码中直接修改布局,并直接使用控件进行业务逻辑开发.但代码量通常比较大,维护没有静态布局方便.不过,作为一个android开发人员,掌握一定的动态布局技巧,有时在工作中也是可以提高一定的代码开发效率.   在动态布局中,要想实现一个布局,一般是先创建五大布局的对象.然后对这些对象进行属性设置,之后再向里面添加子布局或控件. 以RelativeLayou

Android开发UI特效

Android中UI特效 android经典开源代码分享 本文原始网址 作者为23code,欢迎给作者投稿 其它UI相关的网址: https://github.com/Trinea/android-open-project http://alamkanak.github.io/android-libraries-and-resources/ 23Code.com SwipeMenuListView 0 By 23Code on 2014年09月04日 SwipeMenuListView实现lis

Android开发之布局优化

1.抽象布局标签 (1) <include>标签 include标签经常使用于将布局中的公共部分提取出来供其它layout共用,以实现布局模块化.这在布局编写方便提供了大大的便利. 以下以在一个布局main.xml中用include引入还有一个布局foot.xml为例.main.mxl代码例如以下: Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0" encoding="utf-8"?

Android开发,布局xml文件命名注意事项——不能包含任何大写字母

转自:http://blog.sina.com.cn/s/blog_628b45090100zuit.html 在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*.xml 目录下,这与网页开发时使用css控制布局类似,主要目的是使布局与程序代码分开,便于布局的修改以及控制. 如果使用eclipse平台开发,每一个Android项目,都会有一个R.java文件,该文件用于标识所有的资源,当资源文件(一般是位于res目录的下的*.xml文件)被修改了,R.java

Android开发UI新技能,你get这个新技能了吗?(附源码详解)

Jetpack Compose是什么? Jetpack Compose 是安卓用于构建UI的一种新方式,采用代码而非xml文件方式,写法与Flutter非常相似.官方主页:https://developer.android.google.cn/jetpack/compose官方Demo:https://github.com/android/compose-samples/tree/master/JetNews官方入门指导: https://developer.android.google.cn/

Android开发之布局文件LinearLayout

LinearLayout-线性布局,该布局中的控件按照水平方向排列或者竖直方向排列. 通过属性android:orientation=""决定的,可选值:vertical和horizontal. 同时有一个比重属性,android:layout_weight="",可以通过填写每个控件的比重,获取控件在布局中的大小. 设计时可以只设定一行或一列的某个控件的比重属性,让其他控件不参与比重,只需要在该控件中设置android:layout_weight="&q

Android 开发中 布局加载的原理

Android 加载的优先级 是怎么样的? 我现在不了解 他是如何加载的额> 我现在 遇到 的问题是 我的app 主要是面向 720 和 480 的手机 但是有一些 320 的手机 安装的时候直接崩溃 你的意思 是 android 内部加载的布局文件的话 Android 加载内部机制: 第一: 加载 指定布局的的 layout 例如 : Layout-hdpi 第二: 如果没有 layout-720 就去加载 layout! 这样就解决了 APP 中的error: java.lang.Unsup

android开发之布局

     目前用得比较多的布局有线性布局.相对布局以及帧布局. 线性布局      特点:组件一个挨着一个排列,通过设置,可以是横向排列或者是纵向排列.   帧布局      特点:一个组件一帧,叠加在一起,起始位置都在布局的左上角,可以通过设置控制组件位置.      如下面的xml文件,定义了6个TextView,每一个TextView都设置在布局的正中间,每一个颜色都不一样,并且越在外层,面积越小,就形成了如下效果.注意,在帧布局中,越后声明的控件在越上层,如果a控件在b控件之前声明,那么