(振动TextView)配置自定义视图的属性

时间:2011-09-22 08:54:15

标签: android

我刚刚创建了课程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:orientationandroid:text。它接受TextViewLinearLayout的属性。课程本身extends LinearLayout

我的问题出在eclipse的xml编辑器中。当用户键入android:时,eclipse的intellisense为用户提供此命名空间中可用的选项。

在我的情况下,它提供了LinearLayout的属性,因此,例如,TextTextSize不会出现。

有没有办法让它们出现(使用android命名空间)?

如果没有,我应该用我定义的属性创建自己的命名空间吗?或者有没有办法导入android的属性并使其在sherif的属性中?

请记住,我正在使用传递的属性在我的类的构造函数中创建TextView。它工作正常,TextView的所有属性都正确设置。

由于我将创建许多其他小部件,我可能需要自己的命名空间,但最佳做法是什么?例如,我想创建alwaysVibrate属性。它将类似于sherif:alwaysVibrate="true"。我希望我的库可以包含和eclipse以显示我的命名空间的属性:我使用attr.xml的常用方式?

1 个答案:

答案 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