2012-04-09 17 views
0

EditTextの背景に線を描こうとしています。Android EditText.onDraw()に問題が発生しました

私はEditTextをサブクラス化し、以前のEditText宣言を置き換えて、xmlレイアウトに完全修飾パッケージ名を含めました。

次に、onDraw()を実装しました。しかし、起こっているのは、onDrawが無限ループで繰り返し呼び出されるように見えるということです。

私はおそらく無限回帰を開始していると思っていたので、ログメッセージ以外はすべてコメントしましたが、まだ発生しています。

ここでは何が起こっていますか?

package myview; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.widget.EditText; 

public class LinedEditView extends EditText { 

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

    public LinedEditView(Context context) { 
    super(context); 
    } 

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

    @Override 
/////// KEEPS GETTING CALLED !!!!!!??????? //////////// 
    protected void onDraw(Canvas canvas) { 
    Log.d("LinedEditView", "Calling onDraw()"); 
    super.onDraw(canvas); 
    } 
} 

答えて

2

あなたはおそらく、フレームごとに一度でなければなりません(または他に一度更新ごとに必要)と呼ばれるたびonDraw()を、ログインしているように見えます。

通常、アニメーションループの動作は、それがまったく繰り返される無限ループであり、呼び出された時点のビューの状態に応じてキャンバスに描画されます。

+1

私は同じ問題に直面しています....このアニメーションの無限ループをブロックして、onDrawメソッドを呼び出さないようにするにはどうすればいいですか? –

関連する問題