4

这个Android代码是什么意思?

和空有什么区别*+

@*android:id

像这样在 android_ics/packages/apps/Setting/res/layout

<TextView android:id="@*android:id/timeDisplayForeground"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:ellipsize="none"
    android:textSize="@dimen/crypt_clock_size"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/crypt_keeper_clock_foreground"
    android:layout_alignLeft="@*android:id/timeDisplayBackground"
    android:layout_alignTop="@*android:id/timeDisplayBackground"
    android:layout_marginBottom="6dip" />
4

2 回答 2

7

* 允许您访问私有资源。私有资源之所以私有是有原因的,因为它们的名称将来可能会作为固件或皮肤更新的一部分而更改。

使用这些资源不是一个好主意,除非你工作在一个你知道这些资源在未来不会改变和破坏你的应用程序的环境中。

在您的示例中,系统应用程序正在引用私有资源,这是您最常看到使用此 * 引用的地方。

于 2013-03-27T01:35:14.010 回答
2

我之前回答过,但可能误解了你的问题。在您的项目中有一个名为 R.java 的生成文件,其中列出了您的资源。例如,当您创建视图并添加按钮时,您会看到其中一些信息自动进入您的 R.java 文件。在 Java 中,您可以使用这些成员访问信息。然而,在 XML 中,您必须通过引用标签或节点来访问它们。

@android:id refers to the public system member called "id"
@id refers to one that you've created
@+id says to create one called "id" (and what to set it to)
@*android:id refers to a private system member

参考:http: //developer.android.com/training/basics/firstapp/building-ui.html

于 2013-03-27T01:28:05.980 回答