android id和 id区别吗,Android中“ @ id /”和“ @ + id /”之间的区别

What is the diffirence between the @id/ and @+id/?

在@+id/中,加号+指示创建新的资源名称并将其添加到R.java文件中,但是@id/呢? 从ID的文档中:引用Android资源ID时,您不需要加号,但必须添加android包名称空间,如下所示:

android:id="@android:id/list"

但是在下面的图像中,Eclipse不建议任何类型的@android:id/。

854bf613facdfb9c5c223b42d468389a.png

Are @id/ and @android:id/ the same?

从android docs :(永远找这个,我一直在寻找一个不相关的问题)developer.android.com/guide/topics/resources/

您使用@android:id/..引用Android系统中已经定义的Android resources,而使用@id/..来访问您在项目中定义/创建的资源

更多信息

根据您在聊天室中所做的澄清,您说自己有这样的问题:

If we use android:id="@id/layout_item_id" it doesn't work. Instead @+id/ works so what's the difference here? And that was my original question.

好吧,这取决于上下文,当您使用android:id的XML属性时,您要指定一个新的ID,并指示解析器(或称其为构建器)在,因此必须包含+符号。

在另一种情况下,例如android:layout_below="@id/myTextView",则是指已经创建的ID,因此解析器将此链接到R.java中已创建的ID。

再次获得更多信息

正如您在聊天中所说的那样,请注意,如果将android:layout_below="@id/myTextView"标识为在元素中使用的元素,该元素将不能识别ID为myTextView的元素。

关于"更多信息":您可以使用android:layout_below="@+idmyTextView"定义位置,然后使用android:id="@idmyTextView"定义元素本身。

@MarcoW这极大地帮助了我。我在寻找解决此问题的方法时遇到了麻烦(或者更不用说制定正确的搜索条目了)。我想这可能值得一个问题+答案。

谢谢!我遇到了同样的问题,并且文档中对此主题的讨论并不多。但显而易见:我们在这里遇到的问题并不是一个经常出现的问题...

我总是在android:id和android:layout_below上使用@ + id /,这是一个问题吗?

令我烦恼的是,使用Eclipse中的"图形布局"将小部件拖动到布局中,生成的XML将包含使用加号的其他小部件的引用,例如android:layout_below="@+idnumberPicker1"和android:layout_alignBaseline="@+idbutton1"。 :-(现在,我开始骂之前病倒了。

@melanke我也总是这样做。从来没有问题。我想知道它是否有效果,尽管它可能不显眼。

@RestInPeace也许应用程序通过这样做会使用更多的内存。但是我已经按照这种模式发布了许多应用程序,因此我对此并不担心。

@melanke:将+放入layout_below和android:id确实很好,因为正如坦美·曼达尔(Tanmay Mandal)在他的好答案(但被低估)中提到的那样,是The + means to create the symbol if it doesnt already exist。因此,也没有负面的运行时影响(尽管^^可能导致编译时间的增加很小)。

+号是将ID添加到资源ID列表的捷径。否则,您需要将它们放在这样的xml文件中

@schwiz:以及如何在布局中使用它?

想象您有我在答案中定义的资源文件,然后在布局中可以有如果您没有上面定义的资源文件,则需要像一样进行操作。注意:您只需要一次执行+ id,因此如果您在另一个布局文件中执行了,则下次您在布局中使用相同的ID时就不需要包含+字符。

@schwiz:好的,这很有用,但是我们必须将文件resdrawable或reslayout或resvalues放在哪里,该文件的名称是什么?如果您对此有任何有用的链接,请在此处发布。

这是您需要了解的有关资源的命名约定等所有信息。您可以将文件放在res / values /中,惯例是将其命名为id,但是您可以随意调用它。 developer.android.com/guide/topics/resources/

有时,您会在布局文件中看到引用,例如:

有什么不同?

..很高兴你问?

@+id/foo表示您正在应用程序的名称空间中创建一个名为foo的ID。

您可以使用@id/foo引用它。

@android:id/foo表示您引用的是在android名称空间中定义的ID。

" +"表示创建符号(如果尚不存在)。在引用android:符号时,您不需要它(也不应使用它),因为这些符号已由平台为您定义,并且您无论如何都无法在该命名空间中创建自己的符号。

该名称空间是框架的名称空间。

例如,您需要使用@android:id/list,因为这是框架希望找到的ID。(框架仅知道android名称空间中的ID。)

从此源完全复制

嗖!完成CTRL + C,然后完成CTRL + V。很高兴您也引用了原始帖子。是你的博客吗?

如果我已经在Button类型的第一布局@ + id / mybutton中声明了,那么就不需要在if第二布局中创建if的新实例,就像@ id / mybutton一样。这样对吗 ?

简而言之

android:id="@+id/my_button"

+id Plus sign tells android to add or create a new id in Resources.

android:layout_below="@id/my_button"

it just help to refer the already generated id..

The plus sign (+) before the resource type is needed only when you're defining a resource ID for the first time. When you compile the app, the SDK tools use the ID name to create a new resource ID in your project's R.java file that refers to the EditText element. With the resource ID declared once this way, other references to the ID do not need the plus sign. Using the plus sign is necessary only when specifying a new resource ID and not needed for concrete resources such as strings or layouts. See the sidebox for more information about resource objects.

来自:https://developer.android.com/training/basics/firstapp/building-ui.html

非常简单:

" @ + ..."-新建

" @ ..."-现有链接

来源:https://developer.android.com/guide/topics/resources/layout-resource.html#idvalue

从开发人员指南中:

android:id="@+id/my_button"

字符串开头的符号(@)表示XML解析器应解析并扩展ID字符串的其余部分,并将其标识为ID资源。加号(+)表示这是一个新的资源名称,必须创建并添加到我们的资源中(在R.java文件中)。 Android框架提供了许多其他ID资源。引用Android资源ID时,不需要加号,但必须添加android包名称空间,如下所示:

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

Android使用一些称为资源的文件,其中存储XML文件的值。

现在,当您对XML对象使用@ id /时,它将尝试引用已在值文件中注册的ID。另一方面,当您使用@ + id /时,它将在" +"符号所隐含的值文件中注册一个新的ID。

希望这可以帮助 :)。

Eclipse中存在一个错误,有时即使您只是创建了一个新的@+id/..,它也不会立即添加到R.java文件中,即使在干净构建项目后也是如此。解决方案是重新启动Eclipse。

我认为应该尽快解决此问题,因为它可能(并根据经验)会使一些开发人员误以为他们的语法有问题,即使实际上没有什么可调试的,也要尝试对其进行调试。

我改用Android Studio却从不回头的原因之一:)(我知道在您撰写答案时还不存在)

@id/和@android:id/不相同。

在您的应用程序中@id/引用ID,@android:id/引用Android平台中的项目。

Eclipse是错误的。

您是说@id referencing ID in your application,但是当我们使用eclise引用应用程序资源时,它给出了Error: No resource found that matches the given name (at id with value @idmy_resource_id)。那么@id和@+id之间有什么区别?你怎么能说日食是错的?

如果不向您显示@android:id建议,Eclipse是错误的。如果您使用@ id / myId而不在某处用@ + id / myId声明它,那您就错了。必须使用@ + id / xxx在应用程序中的某个位置声明所有@ id / xxx。

感谢您的澄清。我认为这里的eclipse并不是错误的,而是根据布局元素的上下文显示了建议。如@id所示,仅显示@id

@+id和@id之间的区别是:

@+id用于为R.java文件中的视图创建ID。

@id用于引用在R.java文件中为视图创建的ID。

我们将@+id与android:id=""一起使用,但是如果未创建id并在创建之前引用它,该怎么办(转发引用)。

在这种情况下,我们使用@+id创建ID,并且在定义视图时必须引用它。

请参考以下代码:

android:id="@+id/dates"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_toLeftOf="@+id/spinner" />

android:id="@id/spinner"

android:layout_width="96dp"

android:layout_height="wrap_content"

android:layout_below="@id/dates"

android:layout_alignParentRight="true" />

在上面的代码中,在其他视图中创建了Spinner @+id/spinner的ID,在定义Spinner时,我们引用的是上面创建的ID。

因此,如果要在创建视图之前使用视图,则必须创建ID。

Android中"@+id/"和"@id/"之间的区别

第一个用于创建特定ui组件的ID,另一个用于引用特定ui组件

如果视图项执行相同的操作,则可以对任何布局中的每个条目使用@ + id,因为在编译多个@ + id / foo时,R.java文件仅创建一个枚举。因此,例如,如果我在每个页面上执行相同操作的保存按钮,则在每个布局中使用android:id =" @ + id / button_save"。 R.java文件的button_save只有一个条目。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值