0

カスタム ビューとカスタム定義の属性がいくつかあります。ビューが使用する属性を定義して、Eclipse がコンテンツ アシストに使用できるようにしたいと考えています。

たとえば、res/values フォルダーで次のように宣言されたカスタム xml 属性を取得しました。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="TagAttrs">
        <attr name="spColor" format="color" />
    </declare-styleable>
</resources> 

そして私のレイアウトファイルはカスタム属性を持つカスタムビューを使用しています:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.twp"
    ...
    >

    <com.twp.TestView
        android:id="@+id/testView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:spColor="#FF00FF" >
       ...
   </com.twp.TestView>
</LinearLayout>

android: プレフィックスを使用すると、Eclipse は (TestView の派生元である) LinearLayout に必要なすべてのオプションを提示しますが、app: プレフィックスを使用すると、下部に「要素 com.twp.TestView ではない」と赤で表示されます。利用可能"。また、spColor 内でコンテンツ アシストを実行しようとすると、「現在の場所ではコンテンツ アシストを利用できません」と表示されます。「app」名前空間を定義したので、スタイル可能な宣言を見つけて、少なくとも spColor が色であることを知ることができると思います。

これはEclipseの単なる制限ですか、それともビューのカスタム属性を明示的に定義できますか?

4

1 に答える 1

1

declare-styleable の name 属性の値は、関連付けられたクラスの非修飾名または関連付けられたクラスのスーパークラスの非修飾名と一致する必要があると思います。したがって、TestView の直接のスーパークラスが LinearLayout の場合、関連する declare-styleable の name 属性の値は、TagAttrs ではなく TestView にする必要があります。

于 2012-08-26T23:20:30.923 に答える