自定义元素和包名称

时间:2012-05-13 10:00:39

标签: android custom-attributes

在Android中创建具有属性的自定义元素时,我需要将应用程序的名称空间放在布局中。

例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:whatever="http://schemas.android.com/apk/res/org.example.mypackage"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <org.example.mypackage.MyCustomView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      whatever:my_custom_attribute="Hello, world!" />
</LinearLayout>

这是否还要求我在Eclipse中的项目结构与在Manifest中定义的Android包的名称相同 - 根据示例? 这也有用吗:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:whatever="http://schemas.android.com/apk/res/org.mycompany.myproduct"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <org.example.mypackage.MyCustomView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      whatever:my_custom_attribute="Hello, world!" />
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

应该反映的应用程序的包名称。因此,正确使用它是正确的。

例如:

xmlns:whatever="http://schemas.android.com/apk/res/org.mycompany.myproduct中,最后一部分org.mycompany.myproduct应与包名称相同。您可以将xmlns:whatever更改为xmlns:theblitz之类的内容,但请确保使用theblitz作为xml中属性的前缀。

有关详情,请参阅this