关于android xml文件中 android:id="@+id/my_button"的含义疑问

本文详细解析了Android UI开发中使用@+id/my_button语法的原理与用途,包括@和+符号的作用,以及如何引用已有的资源ID。

许多UI开发的同学会对 android:id="@+id/my_button"的含义有所疑问,细心的同学会发现官方SDK是这样解释的,

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

The at-symbol (@) at the beginning of the string indicates that the XML parser should parse and expand the rest of the ID string and identify it as an ID resource. The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in theR.javafile). There are a number of other ID resources that are offered by the Android framework. When referencing an Android resource ID, you do not need the plus-symbol, but must add theandroidpackage namespace, like so:

android:id="@android:id/empty"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------


意思也就是说 @符号要通知xml要转换@后面的字符串为ID资源,而+号表示这是要创建一个新的资源名字,并且添加到R.java文件中。

当你要引用已有的资源的时候 可以直接写成 @android:id/empty

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/beijing1" tools:ignore="ExtraText"> <!-- 头像 --> <ImageView android:id="@+id/iv_avatar" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" android:src="@drawable/touxiang" android:scaleType="centerCrop" /> <EditText android:id="@+id/et_user" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/iv_avatar" android:layout_marginTop="100dp" android:layout_marginLeft="32dp" android:layout_marginRight="32dp" android:background="@android:color/white" android:padding="8dp" android:hint="QQ号/邮箱/手机号" android:inputType="textPersonName" /> <EditText android:id="@+id/et_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/et_user" android:layout_marginTop="40dp" android:layout_marginLeft="32dp" android:layout_marginRight="32dp" android:background="@android:color/white" android:padding="8dp" android:hint="请输入密码" android:inputType="textPassword" /> <!-- 登录和注册按钮 --> <LinearLayout android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/et_password" android:layout_margin="16dp" android:orientation="horizontal" android:weightSum="2" tools:ignore="UnknownId"> <Button android:id="@+id/btn_login" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="30dp" android:layout_below="@+id/et_password" android:text="登录" /> <Button android:id="@+id/btn_register" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@+id/et_password" android:layout_weight="1" android:layout_marginTop="30dp" android:text="注册" /> </LinearLayout> <TextView android:id="@+id/forgotPasswordText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_centerHorizontal="true" android:layout_marginTop="15dp" android:layout_below="@+id/button_container" android:text="忘记密码" android:textSize="20sp" android:textColor="@color/white" /> <!-- 同意 QQ 服务协议文本 --> <TextView android:id="@+id/tv_agreement" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="30dp" android:textColor="@color/white" android:textSize="20sp" android:text="同意 QQ 服务协议 " /> </RelativeLayout> 晚上上述代码,使点击登陆和注册时的按钮时,弹出此程序正在完善的普通对话框,用指定onClick方法实现,要详细步骤
最新发布
09-23
Android下的界面设计及数据计算: 1.设计一个Activity间跳转的程序。要求初始Activity中有三个目标Activity的单选按钮; 2.选择其中一个,单击“确定”按钮,则跳转到指定Activity。每一个目标Activity在返回时传递一个标识字符串,返回后在初始Activity中显示这个标识字符串。 进入手机界面就显示请选择歌手:有三行人物名称,分别是林忆莲、张学友、王菲,外加一个确定按钮。 MainActivity、LinActivity、WangActivity、ZhangActivity、activity_lin、activity_wang、activity_zhang、activity_main。 MainActivity的开头为 package com.example.myapplication1; gimport android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view,View; import android.widget.Button; import android.widget.RadioGroup; import android.widget.TextView; import androidx.annotation.NuLlabLe; oimport androidx.appcompat.app.AppCompatActivity; 中/* *7-2. * 设计一个Activity间跳转的程序。要求初始Activity中有三个目标Activity的单选按钮. * 选择其中一个,单击“确定”按钮,则跳转到指定Activity。每一个目标Activity在返回时传 * 递一个标识字符串,返回后在初始Activity中显示这个标识字符串。 I public cLass MainActivity extends AppCompatActivity { Button btnok; RadioGroup rgsinger; Textview tvLabel; @override protected void onCreate(Bundle savedInstancestate) super.onCreate(savedInstanceState); setcontentview(R.layout.activity_main); btnok = findViewById(R.id.btn_ok); rgsinger = findViewById(R.id.rg_singer); tvlabel = findViewById(R.id.tv_label); activity_main的主要内容大致为 <?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" android:orientation="vertical" android:layout_margin="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="请选择歌手:" android:layout_gravity="center_horizontal" /> <RadioGroup android:id="@+id/rg_singer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_margin="16dp"> <RadioButton android:id="@+id/rb_zhang" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:text="张学友" /> <RadioButton android:id="@+id/rb_lin" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="林忆莲" /> <RadioButton android:id="@+id/rb_wang" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="王菲" /> </RadioGroup> <Button android:id="@+id/btn_ok" android:text="确定" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tv_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textColor="@color/black" android:layout_margin="16dp" /> </LinearLayout> 三张图片的地址为: "D:\learn\ANDROID\Android\project\2\app\src\androidTest\java\com\example\myapplication\app\src\main\res\drawable\zhang.jpg" "D:\learn\ANDROID\Android\project\2\app\src\androidTest\java\com\example\myapplication\app\src\main\res\drawable\wang.jpg" "D:\learn\ANDROID\Android\project\2\app\src\androidTest\java\com\example\myapplication\app\src\main\res\drawable\lin.jpg"
05-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值