2013-10-14 43 views
1

我想一个视图添加到一个ViewGroup上ViewGroup中的的onTouchEvent,以下视图是代码:
添加在一个ViewGroup

 ViewGroup mDrawingCanvas = new ViewGroup(mContext) 
     { 
      @Override 
      public boolean isFocused() { 
       // TODO Auto-generated method stub 
       Log.d(TAG, "View's On focused is called !"); 
       return super.isFocused(); 
      } 

      @Override 
      public boolean onTouchEvent(MotionEvent event) { 
       // TODO Auto-generated method stub 

       switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 

        View vv = new View(mContext); 
        vv.setBackgroundColor(Color.GREEN); 
        vv.setLayoutParams(new LayoutParams(200, 200)); 
        this.addView(vv); 

        Toast.makeText(mContext, "Views child count = "+this.getChildCount(), Toast.LENGTH_SHORT).show();; 

        break; 

       return true; 
      } 

      @Override 
      protected void onLayout(boolean changed, int l, int t, int r, 
        int b) { 
       // TODO Auto-generated method stub 

      } 
     }; 

被添加到ViewGroup中来看,吐司显示在每一个更大的浏览次数触摸关闭事件,但ViewGroup中的屏幕上未显示视图。
我在StackOverflow上看到过相关的问题,但我的问题是独一无二的。
请指导我如何解决这个问题,高度赞赏任何帮助。

P.S:我也尝试在将View添加到ViewGroup之前设置视图的Layout参数,但获得的结果相同。在将ViewGroup添加到ViewGroup中之后,我还在LogCat中打印了视图的宽度和高度,并且它始终显示0.我认为问题出现在视图宽度和高度设置的某处。

+0

实现onLayout方法 – pskink

+0

请详细说明一下,我应该在'onLayout(...)'方法做什么实现? –

+0

只是看到现有的ViewGroup.onLayout。实现 – pskink

回答

1

,你必须实现onLayout方法来显示任何内容。

ViewGroup只是其他布局的基类,它本身不做任何事情。我建议使用其后代之一,如FrameLayoutLinearLayout


如果你正在创建一个绘图应用程序,你可能使用一个Canvas而不是使用自定义布局更好。 Canvas已经提供了几种绘制直线,圆形,矩形等的方法,但如果您希望能够随后移动一个元素,则需要执行一些工作。

Draw with a Canvas

+0

感谢您的快速回复!,请分享'onLayout(..)'的一些示例代码,以便我可以自定义:) –

+0

我已经尝试过,绘制形状和其他东西。但我无法选择或移动图纸。因此,我已经开始采用这种方法。看看这个问题http://stackoverflow.com/questions/19354776/how-to-move-a-shapedrawable-in-canvas-on-touch-events –

0

您应该定义子视图在onLayout方法中的ViewGroup中的显示方式。 如果你并不需要一些特殊的观点,尽量如果您使用的是自定义ViewGroup使用的FrameLayout而不是一个ViewGroup

+0

我正在实施一个绘图应用程序,我将添加线视图,矩形视图,自由手视图到这个ViewGroup。我是新来的绘制Android的东西,我不知道我是否使用正确的方法。但是,现在,我打算将我的绘图画布作为ViewGroup的子类,并计划将视图和其他形状添加到此视图组。 –

+0

请分享一下'onLayout(...)的一些简单的实现代码'这里会有很大的帮助。 –

+0

感谢您的快速回复! :) –

相关问题