2012-05-13 11 views
0

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での私のプロジェクトの構造がマニフェストに定義したようなものの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

その反映されるべきアプリケーションのパッケージ名。あなたがしているようにそれを使用するように正しいです。例えば

xmlns:whatever="http://schemas.android.com/apk/res/org.mycompany.myproductでは最後の部分org.mycompany.myproductは、あなたのパッケージ名と同じでなければなりません。 xmlns:whateverxmlns:theblitzのように変更することができますが、xmlの属性の接頭辞としてtheblitzを使用するようにしてください。詳細情報については

は、私はあなたが私が何を意味するか誤解だと思う(または私はあなたの答えを誤解)this

+0

をお読みください。最初の例では、xmlnsのdeclerationとcustomer要素の宣言の両方で "org.mycompany.myproduct"を使用しました。 2つ目は、カスタム要素のパッケージは「org.mycompany.myproduct」ではなく「org.example.mypackage」です。 – theblitz

+0

ビュータイプ 'org.example.mypackage.MyCustomView'はクラスファイルと同じ方法で定義されています – waqaslam

+0

したがって、xmlnsの値と一致する必要はありません - そうですか? – theblitz

関連する問題