2012-01-17 15 views
0

私はカスタムImageView( 'CustomImageView')と編集 - テキストをアクティビティ 'ImageViewActivity'の線形レイアウトに持っています。編集テキストは最初は非表示に設定されています。 customimageviewがタッチされ、onDraw()が呼び出されると、Edit-textの可視性を可視にします。このコードをどこに置くべきですか? ImageViewActivityため コード:カスタムの子ビューに触れたときに親アクティビティコードを実装する方法は?

public class ImageViewActivity extends Activity { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.custom_imageview); 


    } 
} 

そしてCustomImageViewのコードは次のとおりです。

public class CustomImageView extends ImageView { 

Paint paint = new Paint(); 
float xp = -1, yp = -1; 
private Options opt; 


public CustomImageView(Context context) { 
    super(context); 
    init(); 
} 

public CustomImageView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(); 
} 

public CustomImageView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    init(); 
} 

public void init() { 

    opt = new BitmapFactory.Options(); 
    opt.inJustDecodeBounds = true; 

    paint.setAntiAlias(true); 
    paint.setColor(Color.RED); 

    paint.setStyle(Paint.Style.FILL); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_UP) { 

     xp = event.getX(); 
     yp = event.getY(); 

     invalidate(); 

    } 
    return true; 
} 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     //some code 
     setMeasuredDimension(width, height); 

} 



@Override 
protected void onDraw(Canvas canvas) { 

    super.onDraw(canvas); 

    if (xp >= 0 && yp > 0) { 

      canvas.drawCircle(xp, yp, 20, paint); 

     } 
    } 


} 
+0

カスタムImageViewとEditTextオブジェクトを渡します。それをフィールドとして設定し、あなたが望むだけ混乱させることができます。 – AJcodez

+0

thats私がやったこと。ありがとう:) – vishalaksh

答えて

0

カスタムリスナーをcustomImageviewクラスに実装し、それを隠すためにedittextを呼び出すか、必要に応じて表示します。カスタムビューのタッチの結果に対して、アクティビティではなくカスタムビューでタッチリスナーを定義する必要があります。カスタムビューのtoucheventの親アクティビティまたは他のメソッドは、あなたのアクティビティにタッチリスナを実装し、タッチビューがカスタムビューである場合にタッチされたビューを見つけ、次にEdittextを表示します。次に、edittextに関してonDraw()で何もする必要はありません。

0

あなたが特定のビュー上のタッチの動きを検出した後、私は目に見えるにビューを設定することをお勧めしたいです。具体的には、ユーザーがどのように触れるかは関係ありません。一度触れたら、あなたの意見を表示したいからです(少なくともあなたが望んだことです)。

関連する問題