1

textViewをサブクラス化し、それにビットマップを追加しようとしました。それは動作しません。同じサブクラスを使用して、線を引いて実験します。それでも動作しません。テキストを描いてみました。できます。

基本クラスをtextViewからViewに変更したとき。すべてが機能します。

textViewがテキスト以外の描画をサポートしていないのではないかと思いますか?textViewの基本クラスを持つビューのonDraw()でdrawLine()を使用して線を描画する方法について、作業コードの例を誰かが示すことができますか?

package com.main.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

public class Display extends TextView{

    Paint p;

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

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

    private void init()
    {
       p = new Paint();
       p.setColor(Color.WHITE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
   // TODO Auto-generated method stub
       super.onDraw(canvas);
       canvas.drawLine(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight(), p);
    }
}

メインアクティビティのコードパッケージcom.main.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class main extends Activity {
    Display input;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initcomponents();
    }


    private void initcomponents()
    {
        input = (Display)findViewById(R.id.rateInput);
    }
}

TextViewからViewに変更した場合。できます。

package com.main.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

public class Display extends View{

    Paint p;

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

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

    private void init()
    {
       p = new Paint();
       p.setColor(Color.WHITE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
   // TODO Auto-generated method stub
       super.onDraw(canvas);
       canvas.drawLine(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight(), p);
    }
}

メインアクティビティのコードパッケージcom.main.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;

public class main extends Activity {
    View input;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initcomponents();
    }


    private void initcomponents()
    {
        input = (View)findViewById(R.id.rateInput);
    }
}

わかりました、このシステムでは今のところ写真を投稿できません。したがって、2番目のコードの結果を表示することはできません。

4

2 に答える 2

1

わかりました drawline がまだ機能しない理由を見つけました。

マニフェスト XML でこの行を削除すると。線が引ける。

android:inputType="numberDecimal"

しかし、なぜ...?

于 2012-04-05T17:05:28.100 に答える
0

メモ帳の例では、TextViewのサブクラスであるEditTextに線を描画するため、可能である必要があります。コードが機能しない理由はわかりませんが、このファイルLinedTextEditを参照してください。

于 2012-04-05T16:39:45.927 に答える