2011-09-22 33 views
7

我刚刚创建了类VibratingTextView。我打算创建一个完整的小部件库,所以我想以正确的方式进行操作。(振动TextView)配置自定义视图的属性

该视图的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的智能感知为用户提供了在这个命名空间中可用的选项。

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

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

如果不是,我是否应该创建自己的名称空间,并使用我定义的属性?或者有没有办法导入android的属性,并使他们在sherif的属性?

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

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

回答

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

+0

顺便说一句:upvote从我的非常酷看你的自定义视图效果和你愿意与我们分享! – Knickedi

+0

+1,但我真的很讨厌坏消息:P!我希望有人有一个解决方案。 –

+0

谢谢你的赏金,虽然我没有回应在赏金时光! – Knickedi