2011-07-10 38 views
0

提出此问题是因为我想编辑“您看到的是您所得到的内容”中的位置,颜色和其他显示属性,模式;因此,在onDraw(Canvas)函数中添加一些特定的行为。所以,我想重写视图类,目前在res/layout/main.xml中使用自定义类是不受支持的。如何在res/layout/main.xml文件中使用自定义视图

任何人都知道一些解决方案?

回答

3

创建您自己的扩展视图的类并重写onDraw方法。在xml中使用它的完全限定名称。这样

.... 
<your.package.MyView android:id="@+id/my_id" ..../> 
.... 

东西然后在你的代码得到这样

MyView mv = (MyView)findViewById(R.id.my_id); 

Here给它一提的是上面的好例子。

+0

感谢您的回答,Mojo。现在我有另一个问题了,我设法在主要活动MovingBoxActivity中定义一个MyLayout类,并将其与com.ijowett.MyLayout一起引用。但是,如果我想将MyLayout定义为MovingBoxActivity的内部类,以便我可以访问MovingBoxAcitvity的私有成员。怎么做? – jowett

+0

如果你将它定义为内部类,它应该是静态的,你可以像这样使用它MovingBoxActivity.MyLayout。但是,当类是静态的时,它不保留对父类的引用,所以你将无法访问它的成员。简单的解决方案将是当你实例化MyLayout有一些设置器来设置所需的字段 - MyView mv =(MyView)findViewById(R.id.my_id); mv.setNeededFiled(field_1); .... 等等; –

+0

是的。我们必须为此获得外部努力。似乎没有一个好的方法来实现它,我只是想在UI编辑器和代码之间进行开发。这可以是谷歌机器人的一个改进想法。 – jowett

相关问题