【Android Studio程序开发】视图显示--设置视图的对齐方式

17 篇文章 2 订阅
12 篇文章 2 订阅

App界面上的视图排列,默认靠左朝上对齐,这也符合日常的书写格式。然而页面的排版不是一成不变 的,有时出于美观或者其他原因,要将视图排列改为朝下或靠右对齐,为此需要另外指定视图的对齐方式。

在XML文件中通过属性android:layout_gravity可以指定当前视图的对齐方向,当属性值为top时表 示视图朝上对齐,

android:gravity="top"

为bottom时表示视图朝下对齐,为left时表示视图靠左对齐,为right时表示视图靠右 对齐。如果希望视图既朝上又靠左,则用竖线连接top与left,此时属性标记为android:layout_gravity="top|left";如果希望视图既朝下又靠右,则用竖线连接bottom与right,此时 属性标记为:

android:layout_gravity="bottom|right"

注意layout_gravity规定的对齐方式,指的是当前视图往上级视图的哪个方向对齐,并非当前视图的内部 对齐。若想设置内部视图的对齐方向,则需由当前视图的android:gravity指定,该属性一样拥有top、bottom、left、right 4种取值及其组合。

它与layout_gravity的不同之处在于

layout_gravity设定了当前视图相对于上级视图的对齐方式,

而gravity设定了下级视图相对于当前视图的对齐方式;

前者决定了 当前视图的位置,而后者决定了下级视图的位置。 为了进一步分辨layout_gravity与gravity的区别,

接下来做个实验,对某个布局视图同时设置android:layout_gravity和android:gravity属性,再观察内外视图的对齐情况。下面便是实验用的XML文件例子: (完整代码见下文)

<!-- 最外层的布局背景为橙色,它的下级视图在水平方向排列 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="300dp"

    android:background="#ffff99"

    android:padding="5dp">

    <!-- 第一个子布局背景为红色,它在上级视图中朝下对齐,它的下级视图则靠左对齐 -->

    <LinearLayout

        android:layout_width="0dp"

        android:layout_height="200dp"

        android:layout_weight="1"

        android:layout_gravity="bottom"

        android:gravity="left"

        android:background="#ff0000"

        android:layout_margin="10dp"

        android:padding="10dp">

        <!-- 内部视图的宽度和高度都是100dp,且背景色为青色 -->

        <View

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:background="#00ffff" />

    </LinearLayout>

    <!-- 第二个子布局背景为红色,它在上级视图中朝上对齐,它的下级视图则靠右对齐 -->

    <LinearLayout

        android:layout_width="0dp"

        android:layout_height="200dp"

        android:layout_weight="1"

        android:layout_gravity="top"

        android:gravity="right"

        android:background="#ff0000"

        android:layout_margin="10dp"

        android:padding="10dp">

        <!-- 内部视图的宽度和高度都是100dp,且背景色为青色 -->

        <View

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:background="#00ffff" />

    </LinearLayout>
</LinearLayout>

运行测试结果如图所示:

由效果图可见,第一个子布局朝下,并且它的内部视图靠左;而第二个子布局朝上,并且它的内部视图 靠右。对比XML文件中的layout_gravity和gravity取值,证明了二者的对齐情况正如之前所言:

layout_gravity决定当前视图位于上级视图的哪个方位,而gravity决定了下级视图位于当前视图的哪个方 位。

================================我是分割线=================================

 完整代码如下:

Java:

package com.example.chapter03;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class ViewGravityActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_gravity);
    }
}

src\main\res\layout\activity_view_gravity.xml:

<?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="300dp"
    android:orientation="horizontal"
    android:background="#ffff99">
    <!-- 第一个字布局背景为红色,它在上级视图中朝下对齐,它的下级视图则靠左对齐 -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:layout_margin="10dp"
        android:padding="10dp"
        android:layout_gravity="bottom">
        <!-- 内部视图的宽度和高度都是100dp,且背景为青色 -->
        <View
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#00ffff" />
    </LinearLayout>
    <!-- 第二个字布局背景为红色,它在上级视图中朝下对齐,它的下级视图则靠左对齐 -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:layout_margin="10dp"
        android:background="#ff0000"
        android:layout_gravity="top"
        android:padding="10dp"
        android:gravity="right">
        <!-- 内部视图的宽度和高度都是100dp,且背景为青色 -->
        <View
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#00ffff"/>

    </LinearLayout>


</LinearLayout>

运行测试:

注意:记得修改清单文件

感谢观看!!! 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio提供了多种布局方式,其中网格布局(GridLayout)是一种灵活的布局方式,可以用于创建类似网格或表格的界面。 要在Android Studio中使用网格布局,可以按照以下步骤进行操作: 1. 打开Android Studio,并创建一个新的项目或打开现有项目。 2. 打开你的布局文件(通常是res/layout目录下的XML文件)。 3. 在布局文件中添加一个GridLayout控件,例如: ```xml <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="3" android:rowCount="3"> <!-- 在这里添加网格布局的子元素 --> </GridLayout> ``` 这个示例创建了一个3x3的网格布局,你可以根据需要调整列数和行数。 4. 在GridLayout控件内部添加子元素,即网格中的单元格。例如: ```xml <TextView android:text="Cell 1" android:layout_column="0" android:layout_row="0" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="Cell 2" android:layout_column="1" android:layout_row="0" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 添加更多的TextView或其他View作为网格布局的子元素 --> ``` 在这个示例中,我们使用TextView作为网格布局的子元素,并通过`layout_column`和`layout_row`属性指定了每个子元素所在的列和行。 5. 根据需要添加更多的子元素,以创建完整的网格布局。 网格布局还支持其他属性,例如`layout_columnSpan`和`layout_rowSpan`可以指定子元素跨越的列数和行数,`layout_gravity`可以控制子元素在单元格中的对齐方式等。 希望以上信息对你有帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值