相关疑难解决方法(0)

onMeasure自定义视图说明

我试着做自定义组件.我扩展了View课程并用onDraw覆盖方法做了一些绘图.为什么我需要覆盖onMeasure?如果我没有,一切都被证明是正确的.有人可以解释一下吗?我该怎么写我的onMeasure方法?我见过几个教程,但每个教程都有点不同.有时他们会super.onMeasure在最后打电话,有时他们会使用setMeasuredDimension而不是打电话.差异在哪里?

毕竟我想要使用几个完全相同的组件.我将这些组件添加到我的XML文件中,但我不知道它们应该有多大.我希望稍后设置它的位置和大小(为什么我需要在自定义组件类时设置大小,onMeasure如果在onDraw我绘制它时也是如此).什么时候我需要这样做?

android view

305
推荐指数
3
解决办法
13万
查看次数

测量在Canvas(Android)上绘制的文本高度

有没有直接测量文字高度的方法?我现在这样做的方法是使用Paint measureText()来获取宽度,然后通过试验和错误找到一个值来获得近似高度.我也一直在搞乱FontMetrics,但所有这些似乎都是近似的方法.

我正在尝试扩展不同分辨率的东西.我可以做到,但我最终得到了令人难以置信的冗长代码,并通过大量计算来确定相对大小.我讨厌它!一定有更好的方法.

graphics android view android-canvas

119
推荐指数
4
解决办法
9万
查看次数

将多行文本绘制到Canvas

一个有希望的快速问题,但我似乎无法找到任何示例......我想View通过a 将多行文本写入自定义Canvas,并且onDraw()我有:

...
String text = "This is\nmulti-line\ntext";
canvas.drawText(text, 100, 100, mTextPaint);
...
Run Code Online (Sandbox Code Playgroud)

我希望这会导致换行,但相反,我会看到神秘的角色\n.

任何指针赞赏.

保罗

android android-canvas

116
推荐指数
9
解决办法
8万
查看次数

96
推荐指数
6
解决办法
7万
查看次数

Android Canvas.drawText

我有一个视图,我在onDraw(Canvas画布)方法中使用Canvas对象进行绘制.我的代码是:

Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);

paint.setColor(android.R.color.black);
paint.setTextSize(20);
canvas.drawText("Some Text", 10, 25, paint);
Run Code Online (Sandbox Code Playgroud)

问题是文字没有透过背景显示,我做错了什么?如果我删除canvas.drawPaint(paint)和paint.setColor(android.R.color.black),你可以看到屏幕上的文字......

android drawtext android-canvas

80
推荐指数
2
解决办法
17万
查看次数

如何在画布上绘制文字?

我正在尝试为android开发一个简单的饼图类.现在,它可以获取标签和值的映射并绘制饼图.我还没有添加馅饼的图例,这是我需要将文本放在屏幕角落的小矩形附近的地方.任何帮助表示赞赏,因为我是Android开发人员的新手.

android canvas drawable

32
推荐指数
2
解决办法
7万
查看次数

Android drawText包括文本换行

我目前正在创建一个图像编辑器,并尝试使用canvas.drawText()在图像上绘制文本.到目前为止,我已经成功地做到了这一点,但是当用户输入的文本太长时,文本只会继续在页面外的一行上,并且不会将自身包裹到屏幕的宽度.我该怎么做呢?我尝试过使用静态布局,但似乎无法让它工作,有没有人有一个教程来做到这一点?

我使用静态布局绘制画布的功能:

 public Bitmap createImage(float scr_x,float scr_y,String user_text){

            Canvas canvas = new Canvas(image);

            scr_x = 100;
            scr_y = 100;
            final TextPaint tp = new TextPaint(Color.WHITE);     
            canvas.save();
            StaticLayout sl = new StaticLayout("" + user_text, tp, originalBitmap.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
            sl.draw(canvas);

         return image;
        }
Run Code Online (Sandbox Code Playgroud)

好的,我已经更新了我的代码,但是当我尝试在图像上绘制时根本没有任何事情发生,我不知道为什么:

    public Bitmap createImage(String user_text) {
    // canvas object with bitmap image as constructor
    Canvas canvas = new Canvas(image);
    TextPaint tp = new TextPaint();
    tp.setColor(Color.RED);
    tp.setTextSize(50);
    tp.setTextAlign(Align.CENTER);
    tp.setAntiAlias(true);
    StaticLayout sl = new StaticLayout("" + user_text, tp,
            canvas.getWidth(), …
Run Code Online (Sandbox Code Playgroud)

android canvas word-wrap drawtext

14
推荐指数
2
解决办法
1万
查看次数

改变换行行为

我可以在TextViews中使用Spannable来创建具有不同外观,下划线,删除线等的跨距.如何改变换行行为呢?特别是,我不希望在中间包装一个电子邮件地址,我希望它像一个单词一样.

我试过WrapTogetherSpan,但我无法让它工作.看起来它只被DynamicLayout使用,我无法强制TextView使用DynamicLayout.

<TextView
  android:id="@+id/merchant_email_field"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:textSize="@dimen/account_setting_email"
  android:gravity="center"
  android:bufferType="spannable"
  android:maxLines="2"
  android:ellipsize="end"
  />
Run Code Online (Sandbox Code Playgroud)

我如何设置spannable:

WrapTogetherSpan TOGETHER_SPAN = new WrapTogetherSpan() {};
String collectedString = getString(R.string.email_sentence, userEmail);
int emailOffset = collectedString.indexOf(userEmail);
Spannable emailSpannable = Spannable.Factory.getInstance()
    .newSpannable(collectedString);
emailSpannable.setSpan(TOGETHER_SPAN, emailOffset,
    emailOffset + userEmail.length(),
    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(emailSpannable)
Run Code Online (Sandbox Code Playgroud)

android word-wrap textview

12
推荐指数
2
解决办法
2074
查看次数

BoringLayout的可用性

我正在编写一个管理文本的自定义布局.在我开始实现该ViewGroup#onMeasure()方法之前,我开始挖掘EditText源代码,特别是在该EditText#onMeasure()方法中.所以我遇到了 BoringLayout.我阅读了文档,但我没有找到很多解释,以及如何在实际的自定义实现中使用它.那么我的问题是如何以正确的方式使用它以及何时需要它.

android android-custom-view

6
推荐指数
1
解决办法
2942
查看次数