2012-01-09 15 views
3

私はシェイプを追加してスケーラブルなシェイプを作成し、ViewGroupに対して別個のビューとして扱います。ハンドラをクリックすると、ViewGroupへの参照を取得してすべてを拡大縮小できますか? handle.getParent()はnullを返します。私のViewGroupはプログラムによって作成されました。親ViewGroupへの参照を取得する

public class ShapeView extends ViewGroup { 

    private SelectorView mSelectorView; 

    public ShapeView (Context context) { 
      super(context); 
      RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(200, 200); 
      this.setLayoutParams(p); 
      mSelectorView = new SelectorView(context); 
      this.addView(mSelectorView); 
    } 
} 


public class SelectorView extends View { 

public RectangleDrawable mRectangleDrawable; 

    public SelectorView (Context context) { 
      super(context); 
      Log.v(TAG, "constructor"); 
      mRectangleDrawable = new RectangleDrawable(); 
      RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(20, 20); 
      this.setLayoutParams(p); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      mRectangleDrawable.draw(canvas); 
    } 


    public boolean onTouchEvent(MotionEvent event) { 

      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: { 
       ViewGroup parentView = (ViewGroup)this.getParent(); 
       parentView.setX(100); 
       parentView.setY(100); 
       break; 
       } 
      } 
      return true; 
    } 

} 
+0

をSelectorView.this.getParent()を使用してくださいあなたがハンドルを追加し、クリックに応答するために使用しているコードを投稿してください。 –

+0

詳細を追加 – KcYxA

+0

クリックを処理するコードを追加してください。 –

答えて

7

)(代わりにthis.getParentの

public class SelectorView extends View { 

public RectangleDrawable mRectangleDrawable; 

public SelectorView (Context context) { 
     super(context); 
     Log.v(TAG, "constructor"); 
     mRectangleDrawable = new RectangleDrawable(); 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(20, 20); 
     this.setLayoutParams(p); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     mRectangleDrawable.draw(canvas); 
} 


public boolean onTouchEvent(MotionEvent event) { 

     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      ViewGroup parentView = (ViewGroup)SelectorView.this.getParent(); 
      parentView.setX(100); 
      parentView.setY(100); 
      break; 
      } 
     } 
     return true; 
} 

} 
+0

ありがとう!!!!!! – KcYxA

関連する問題