Android----xml文件中的控件的id设置

简介:

    Android开放中要想得到布局文件中控件的引用,该控件必须设置id属性,这两有两种方式设置id:(1)@+id/xxxx;(2)@id/xxxx;下面做个简单的介绍。

  1. @+id/xxx:如果R文件中没有该id则创建;

注意:一个xml文件中不能出现两个以该形式设置同一id的两个控件(include标签例外);

示例1 正确的使用:

1
2
3
4
5
< TextView
     android:id = "@+id/mytv"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello world" />

示例2 错误(两个id相同):此时系统会提醒报错

1
2
3
4
5
6
7
8
9
10
< TextView
     android:id = "@+id/mytv"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello world" />
< TextView
     android:id = "@+id/mytv"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello world" />

示例3 允许以下用法,但是该id指向的是include标签,之后的linearLayout设置id的操作无意义:

1
2
3
4
5
6
7
8
9
10
< include
     android:id = "@+id/include1"
     layout = "@layout/my"
     android:layout_width = "50dp"
     android:layout_height = "50dp" />
< LinearLayout
     android:id = "@+id/include1"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:orientation = "horizontal" />

如果将include标签与LinearLayout交换位置则会报错。

示例 4 允许以下用法,但是该id指向TextView,之后的include标签和LinearLayout设置id无意义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<TextView
     android:id= "@+id/mytv"
     android:layout_width= "wrap_content"
     android:layout_height= "wrap_content"
     android:text= "hello world" />
<include
     android:id= "@id/mytv"
     layout= "@layout/my"
     android:layout_width= "50dp"
     android:layout_height= "50dp" />
<LinearLayout
     android:id= "@id/mytv"
     android:layout_width= "wrap_content"
     android:layout_height= "wrap_content"
     android:orientation= "horizontal" />

如果将TextView的位置下移,运行会出错。如果include中引用的布局存在与TextView相同的id设置,不会报错但是无意义。

2.@id/xxxx:引用ids.xml中相应的id,与@+id/xxx不同,一旦向ids.xml文件中添加一个id在R.java文件中会生成一个相应的id,无论是否有控件使用该id。

使用示例:

(1)创建ids.xml

1
2
3
4
5
6
7
8
9
10
< resources >
     < item  name = "hello"  type = "id"  />
     < item  name = "hello2"  type = "id"  />
     < item  name = "hello3"  type = "id"  />
     < item  name = "hello4"  type = "id"  />
     < item  name = "hello5"  type = "id"  />
     < item  name = "hello6"  type = "id"  />
     < item  name = "hello7"  type = "id"  />
     < item  name = "hello8"  type = "id"  />
</ resources >

(2)使用id

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< TextView
     android:id = "@id/hello"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello 1"  />
 
< TextView
     android:id = "@id/hello"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello 2"  />
 
< TextView
     android:id = "@id/hello"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "hello 3"  />

多个控件可以以同样的方式设置统一id,但是该id只属于最先使用该id的控件。











本文转自wauoen51CTO博客,原文链接: http://blog.51cto.com/7183397/1847317,如需转载请自行联系原作者


相关文章
|
5月前
|
Android开发 开发者
Android设置View是否可用
在Android开发中,有时需要将布局设置为不可点击状态(失去焦点)。常见的解决方法是使用`setOnClickListener(null)`,但本文介绍一种更通用的方式:通过封装`setViewEnabled`方法实现。该方法可递归设置View及其子View的启用状态,支持传入目标View和布尔值(`true`为可用,`false`为禁用)。例如,调用`setViewEnabled(edittext, false)`即可禁用EditText。文章附有源码及示例动图,帮助开发者快速理解与应用。
107 1
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
5月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
458 19
|
5月前
|
Android开发 开发者
Android中Dialog位置+样式的设置
本文介绍了在Android开发中如何设置Dialog的位置和样式。通过自定义`MyDialog`类,可以灵活调整Dialog的显示位置,例如将其固定在屏幕底部,并设置宽度匹配父布局。同时,文章还展示了如何模仿Android原生Dialog样式,通过定义`MyDialogStyle`去除标题栏、设置背景透明度、添加阴影效果以及配置点击外部关闭等功能,从而实现更加美观和符合需求的Dialog效果。代码示例详细,便于开发者快速上手实现。
336 2
|
5月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
278 2
|
5月前
|
Android开发
Android控件样式的抽取(小提及快捷方式)
在Android开发中,若多个控件样式重复,可抽取公共部分以简化代码。例如对EditText提取样式,通过编辑`styles.xml`实现复用。为提高效率,Android Studio提供自动提取Style功能:右键点击控件样式选项,选择“Style...”,勾选需要提取的属性后确认,即可快速生成样式代码,显著提升开发便利性。
145 2
|
5月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
1153 2
|
8月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
738 83
|
11月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
150 2
|
XML Android开发 数据格式
Android自定义控件(十二)——自定义属性及应用
Android自定义控件(十二)——自定义属性及应用
261 0
Android自定义控件(十二)——自定义属性及应用

热门文章

最新文章