2013-08-20 32 views
1

我想创建自定义Android视图(MyCustomView)。在此查看我想拥有自定义类型的属性(MyCustomType)。类似于:自定义Android视图的自定义类型属性

MyCustomView extends LinearLayout { 

    private MyCustomType prop1; 

    public MyCustomType getProp1() 
    { 
     return this.prop1; 
    } 

    public void setProp1(MyCustomType value) 
    { 
     this.prop1 = value;} 
    } 
} 

到目前为止好。但是现在我想能够从XML设置这个属性的值。我可以使用字符串,int,引用格式创建一个自定义属性,但我看不到如何将此属性定义为MyCustomType格式。我形象的东西类似于此:

<declare-styleable name="MyCustomView"> 
    <attr name="prop1" format="MyCustomType"/> 
</declare-styleable> 

这是可能以某种方式?或者自定义类型属性可能只能从代码后面设置

谢谢!

+0

感谢您的评论,但是对于从XML设置的CUSTOM TYPE属性没有任何帮助。只有一个参考如何创建一个类型的字符串,整数,布尔值,引用等自定义属性请仔细阅读问题。 –

+0

好的。你不能。看到我的回答 –

回答

0

不能与Android框架使用自己的财产类型。你可以用自己的proprties根据可用类型但就是这样。不知道你的情况是什么类型,但在大多数情况下,无论这种习惯是什么,它都可以通过可用的基元来解决。

+0

好的 - 谢谢你的时间! –

1

我真的不明白你为什么需要这个。但是您可以使用format =“String”并在布局的属性字段中编写完整的类名称。例如: 定制:为prop1 = “com.example.MyCustomType”

然后在视图的构造函数:

TypedArray a = context.getTheme().obtainStyledAttributes(
    attrs, 
    R.styleable.MyCustomView, 
    0, 0); 
String className = a.getString(R.id.prop1); 
Class<MySustomType> c = Class.forName(className); 
MySustomType prop = c.newInstance(); 
setProp1(prop);