gpt4 book ai didi

android - TextView的onDraw支持图形绘制吗?

转载 作者:行者123 更新时间:2023-11-30 04:16:01 24 4
gpt4 key购买 nike

我尝试子类化 textView 并向其添加位图。这是行不通的。使用相同的子类,我通过画一条线进行实验。它仍然不起作用。我试着画文字。它有效。

当我将基类从 textView 更改为 View 时。一切正常。

我想知道 textView 是否不支持绘制除文本以外的任何其他内容?有人可以展示一个工作代码示例,说明如何在具有 textView 基类的 View 的 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);
}
}

主要 Activity 的代码 包 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);
}
}

主要 Activity 的代码 包 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);
}
}

好的,这个系统暂时不允许我发布图片。所以我无法向您展示第二个代码的结果。

最佳答案

好的,我已经找到了画线不起作用的原因。

当我删除 list XML 中的这一行时。可以画线。

android:inputType="numberDecimal"

但是为什么...?

关于android - TextView的onDraw支持图形绘制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com