我刚刚创建了类 VibratingTextView
。我打算创建一个完整的小部件库,所以我想以正确的方式进行。
此 View 的 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
的属性。该类本身扩展了 LinearLayout
。
我的问题出在eclipse的xml编辑器上。当用户键入 android:
时,eclipse 的智能感知会为用户提供此命名空间中可用的选项。
在我的例子中,它给出了 LinearLayout
的属性,因此,例如,Text
和 TextSize
不会出现。
有没有办法让它们出现(使用 android
命名空间)?
如果不是,我是否应该使用我定义的属性创建自己的命名空间?或者有没有办法导入 android 的属性并将它们放入 sherif 的属性中?
请记住,我正在使用传递的属性在我的类的构造函数中创建一个 TextView。它工作正常,并且 TextView 的所有属性都已正确设置。
由于我将创建许多其他小部件,我可能需要自己的命名空间,但最佳做法是什么?例如,我想创建 alwaysVibrate
属性。它类似于 sherif:alwaysVibrate="true"
。我希望我的库是可包含的,并且让 eclipse 显示我的命名空间的属性:我使用通常的方式使用 attr.xml
?
最佳答案
我最近遇到了完全相同的问题。这是我在 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 .
关于android - (Vibrating TextView)为自定义 View 配置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512124/