我刚刚创建了课程VibratingTextView
。我打算创建一个完整的小部件库,所以我想以正确的方式做到这一点。
此视图的xml:
<sherif.android.textview.VibratingTextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:text="outToRight" >
</sherif.android.textview.VibratingTextView>
请注意,它有android:orientation
和android:text
。它接受TextView
和LinearLayout
的属性。课程本身extends LinearLayout
。
我的问题出在eclipse的xml编辑器中。当用户键入android:
时,eclipse的intellisense为用户提供此命名空间中可用的选项。
在我的情况下,它提供了LinearLayout
的属性,因此,例如,Text
和TextSize
不会出现。
有没有办法让它们出现(使用android
命名空间)?
如果没有,我应该用我定义的属性创建自己的命名空间吗?或者有没有办法导入android的属性并使其在sherif的属性中?
请记住,我正在使用传递的属性在我的类的构造函数中创建TextView。它工作正常,TextView的所有属性都正确设置。
由于我将创建许多其他小部件,我可能需要自己的命名空间,但最佳做法是什么?例如,我想创建alwaysVibrate
属性。它将类似于sherif:alwaysVibrate="true"
。我希望我的库可以包含和eclipse以显示我的命名空间的属性:我使用attr.xml
的常用方式?
答案 0 :(得分:2)
我最近遇到了同样的问题。以下是attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="NumberPicker">
<attr name="rangeStart" format="integer|reference" />
<attr name="rangeEnd" format="integer|reference" />
<attr name="speed" format="integer|reference" />
<attr name="current" format="integer|reference" />
<attr name="android:orientation" />
</declare-styleable>
</resources>
您可以重复使用Android属性,但不能教他们建议不同的值。事实上,你甚至不能教eclipse来建议你的自定义属性定义(至少在这个帖子的日期,我希望将来看到这个功能)。
您想要了解的有关定义自定义属性的所有其他信息都在以下问题中: Declaring a custom android UI element using XML