2

我想知道有一个地方可以定义所有的Android:命名常量和它的值。不是http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:orientation中的 html 文档

我的意思是,Android 开源代码库中的源代码在哪里,用于 android:orientation 和其他属性,例如 android:gravitiy。我想 0 表示 xx,1 表示 yy,但不是来自网站文档。

非常感谢。

4

2 回答 2

1

你不会发现它们是 Java 的,就像你的项目中的 R 一样。您可以在 android-sdk/platforms/android-#/data/res 的 SDK 中查看它们的 xml 定义

例如,android.R.attr.orientation 位于 android-sdk/platforms/android-#/res/values/attrs.xml 中,对于 platform-16 的定义如下

<!-- Standard orientation constant. -->
<attr name="orientation">
    <!-- Defines an horizontal widget. -->
    <enum name="horizontal" value="0" />
    <!-- Defines a vertical widget. -->
    <enum name="vertical" value="1" />
</attr>
于 2012-12-18T06:24:01.887 回答
1

@Andy McSherry 所说的并不完全正确,因为通常 XML 常量仍然需要在代码中匹配(无论是 Java 还是本机)才能执行逻辑。

话虽如此,没有一个文件包含所有常量的定义。相反,常量通常是相对于它们的使用位置来定义的。例如,android:orientation值可以在LinearLayout( LinearLayout.HORIZONTALwith value 0) 和LinearLayout.VERTICAL(with value 1) 中找到。

的可能值android:gravitiy实际上是在一个单独的类中定义的Gravity,这从封装的角度来看是有意义的,特别是因为重力被不同的例如ViewGroup实现使用。

一般来说,根据经验,如果常量只与单个类相关,您会发现它们在同一个类中声明。否则,它们很可能被分解到单独的文件或例如超类中。

于 2012-12-18T07:34:54.123 回答