2013-10-14 27 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

感謝您的快速回復! :) –