安卓Day7:相对布局的相关内容

一.相关知识点

1.布局特点

在相对布局中,一个控件的位置取决于它和其他控件的相对关系

  • 优点:使用比较灵活
  • 缺点:复杂,比较难

2.主要代码

Relative

3、常用属性

(1)相对于父容器居中

layout_centerInParent 在父容器居中
layout_centerHorizontal 在父容器水平居中
layout_centerVertical 在父容器垂直居中

(2)相对于其它控件的位置

layout_toLeftOf 在……左边
layout_toRightOf 在……右边
layout_above 在……上面
layout_below 在……下面

(3)相对于其它控件对齐

layout_alignLeft 与……左对齐
layout_alignRight 与……右对齐
layout_alignTop 与……顶对齐
layout_alignBottom 与……底对齐
layout_alignBaseLine 与……基线对齐

(4)相对于父容器对齐

layout_alignParentLeft 与父容器左对齐
layout_alignParentRight 与父容器右对齐
layout_alignParentTop 与父容器顶对齐
layout_alignParentBottom 与父容器底对齐

(5)标识符问题

@+id/button —— 创建新的id(建议使用)
@id/button —— 引用已有的id

4.实训案例

(1)创建安卓项目

在这里插入图片描述

(2)在字符资源里面定义变量string

<resources>
    <string name="app_name">相对布局:输入姓名</string>
    <string name="username">姓名:</string>
    <string name="name">请输入姓名</string>
    <string name="sure">确定</string>
    <string name="cancel">取消</string>


</resources>

(3)主布局资源文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:id="@+id/top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        tools:ignore="NotSibling,UnknownId">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/username"
            android:textSize="22dp"
            android:layout_toLeftOf="@id/input"
            android:layout_alignBaseline="@id/input"
            android:layout_alignBottom="@id/input"/>

        <EditText
            android:id="@+id/input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="@string/name"
            android:textSize="22dp" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/blow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/top">

        <Button
            android:id="@+id/TopLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@id/TopRight"
            android:text="@string/sure" />

        <Button
            android:id="@+id/TopRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:text="@string/cancel" />

    </RelativeLayout>

</RelativeLayout>
  • 总共分为两个部分,所以需要两个
  • 首先观察第一个需要layout_alignParentRight 和layout_alignParentTop
  • 在父容器的右上角
  • 和需要layout_alignBaseLine 与……基线对齐
  • 这样才能在同一水平线上
  • 需要在的左边那么就需要用到ayout_toLeftOf 在……左边

(4)编写登录界面代码

package net.yuanjing.relatively;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText Username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Username = findViewById(R.id.input);
    }
    public void doLogin (View view) {
        String username = Username.getText().toString().trim();
        if (!"".equals(username)) {
            Intent intent = new Intent(MainActivity.this, Input.class);
            intent.putExtra("Username", username);
            startActivity(intent);
        } else {
            Toast.makeText(this,"提交失败,请将信息补充完整哦~",Toast.LENGTH_SHORT).show();
        }
    }

    public void doCancel(View view) {
        finish();
    }
}

(5)编写跳转后的界面

package net.yuanjing.relatively;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Input extends AppCompatActivity {
    private TextView tvMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_input);
        tvMessage = findViewById(R.id.tv_Message);
        Intent intent = getIntent();
        if (intent != null) {
            String Username = intent.getStringExtra("username");
            String message = "姓名:" + Username;
            tvMessage.setText(message);
        }

    }
}

在这里插入图片描述

  • 在这里定义一个变量Message,后面直接将内容用tvMessage.setText(message);命令,直接转到页面。

(6)必须要注意的问题

1.两边的键值对必须要一致,要不然获取不了

在这里插入图片描述

2.在注册表中默认是先运行前面的内容,所以我们先把前面的跳转页面的Intent删掉

在这里插入图片描述

(7)最后运行的效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值