振动的TextView:为自定义视图配置属性

7
我刚刚创建了一个名为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的智能感应会给出此命名空间中可用的选项。
在我的情况下,它提供了LinearLayout的属性,因此例如,TextTextSize不会出现。
是否有一种方法可以使它们出现(使用android命名空间)?
如果没有,我应该创建自己的命名空间并定义属性吗?或者是否有一种方法可以导入android的属性并将它们变成sherif的属性?
请记住,我正在使用传递的属性在我的类的构造函数中创建一个TextView。它工作正常,并且所有TextView的属性都被正确设置。
由于我将创建许多其他小部件,因此我可能需要自己的命名空间,但是最佳实践是什么?例如,我想创建alwaysVibrate属性。它将类似于sherif:alwaysVibrate="true"。我希望我的库可以包含,并且eclipse可以显示我的命名空间的属性:我使用attr.xml的常规方法?
1个回答

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建议你的自定义属性定义(至少在这篇文章发布时是这样的,我希望未来能看到这个功能)。
关于定义自定义属性的其他内容,你想知道的都在这个问题中: 使用XML声明自定义Android UI元素

顺便说一句:我为你的自定义视图非常酷炫的效果和愿意与我们分享而点赞! - Knickedi
+1,但我真的很讨厌坏消息:P!希望有人有解决方案。 - Sherif elKhatib
谢谢你的慷慨奖励,尽管我没有在奖励期限内回复! - Knickedi
我正在寻找同样的东西。尝试使用答案中的解决方案,但在我的情况下,Android Studio建议使用以下内容:app:android:orientation(因为“app”是我的自定义命名空间)。有没有办法绕过这种行为,让Android Studio建议使用“android:orientation”? - vir us

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接