0

ビューを拡張するクラスがあります。このクラスは、ビューを構築するために xml で呼び出されます。これで、ビューはロード時に onDraw 関数を自動的に呼び出します。しかし、そのビューをクリックした後にのみ onDraw() 関数で行うことをどのように行うことができますか?? 結論として、ビューをクリックした後にのみ onDraw() 内のコードを実行する必要があります。

DrawView.java:

public class DrawView extends View {
    Paint mPaint = new Paint();
    Context context;

    public DrawView(Context context, AttributeSet attrs){
        super(context, attrs);
        this.context = context;
        // setWillNotDraw(true);

    }

    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        mPaint.setColor(Color.MAGENTA);
        canvas.drawRect((float) (getWidth()*0.3), (float) (getHeight()*0.3), getWidth(), getHeight(), mPaint);

main.xml:

<LinearLayout
      android:orientation="vertical"
      android:layout_height="fill_parent"
      android:layout_width="0dip"
      android:layout_weight="1">    
      <com.example.sliding.DrawView 
            android:id="@+id/tv_listRow_item1"
            android:tag="tv_listRow_item1_1"
            android:layout_height="0dip"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:width="100dip"
            android:height="30dip"
            android:background="@drawable/textview_listrow_border"/>
</LinearLayout>

main.java:

 ((DrawView)v.findViewById(R.id.tv_listRow_item1)).setOnClickListener(listener);
  private View.OnClickListener listener = new OnClickListener() {

    @Override
    public void onClick(View v) {
    }
}

助言がありますか?お時間とご関心をお寄せいただきありがとうございます。

4

1 に答える 1

0

オーバーライドしてみてください

    public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// your actions here
}
}

次に、invalidate()関数を呼び出します。これにより、ビューのonDraw()を呼び出すフラグが設定されます。

于 2013-01-31T15:10:24.373 に答える