0
我有一個擴展視圖的類。 這個類在xml中調用來構建我的視圖。現在視圖自動調用onDraw函數加載onDraw函數。但是,我只能在點擊視圖後才能做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) {
}
}
有什麼建議?感謝您的時間和關注。
如果你想在你點擊時只繪製,那麼你不應該使用onDraw(),因爲每當你的視圖失效時都會調用onDraw(),這種情況發生的原因很多。我懷疑你的意思不僅僅是當然。如果是這樣,那麼只需在視圖上調用invalidate()。如果不是,請澄清你正在嘗試做什麼。 – Simon
你好西蒙。該視圖以xml構建。但是當我點擊時,我需要在相同的視圖中進行稍後的修改。我知道onDraw()會自動執行加載的代碼。但是,如何我可以執行onDraw()內的代碼當我點擊視圖?建立一個新的功能工作是一個好的故事? –
如果是WHEN,那麼只需在視圖上調用invalidate()。 myDrawView.invalidate()。而已。不需要更多的代碼。 – Simon