相关疑难解决方法(0)

StaticLayout如何在Android中使用?

我需要构建自己的自定义,TextView所以我一直在学习StaticLayout在画布上绘制文本.这比Canvas.drawText()直接使用更好,或者说文档说的.但是,文档没有给出任何示例.只有模糊的参考才能StaticLayout.Builder成为更新的方法.

我在这里找到了一个例子,但似乎有点过时了.

我终于工作了,但是我在下面添加了我的解释.

android text canvas android-custom-view staticlayout

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

在Android Canvas上包装长文本

我有一个自定义控件,直接进行了大量的2D绘图canvas.

一些图纸是文字,所以我使用的Canvas.drawText()方法.

我想在一些边界内绘制文本 - 左上角,某个最大宽度和最大行数.在绘制文本后,我想知道它花了多少行.

是否有内置函数在边界内绘制文本进行明智的分割?

如果没有,是否有这样做的标准配方?

android 2d canvas

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

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万
查看次数

使用Glide将位图加载到ImageView中

如何使用Glide库将Bitmap加载到我的ImageView中?我想用文本创建自定义图像,并使用Glide将其加载到imageview中.

这是我用文本创建自定义位图的方法

public Bitmap imageWithText(String text) {
    TextView tv = new TextView(context);
    tv.setText(text);
    tv.setTextColor(Color.WHITE);
    tv.setBackgroundColor(Color.BLACK);
    tv.setTypeface(null, Typeface.BOLD);
    tv.setGravity(Gravity.CENTER);
    tv.setTextSize(20);
    tv.setPadding(0, 25, 0, 0);
    Bitmap testB = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(testB);
    tv.layout(0, 0, 100, 100);
    tv.draw(c);
    return testB;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用滑动加载此位图时,我收到错误

Glide.with(getContext()).load(imageWithText("Random text")).into(holder.imgPhoto);
Run Code Online (Sandbox Code Playgroud)

java android bitmap android-bitmap android-glide

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

Canvas.drawText(...)不打印换行符

我试着在我创建的表面视图上写一些文字.它的工作正常,如果title为false,并且没有为文本添加换行符.但是,如果我添加标题并因此添加换行符,则不会按预期打印换行符,而是打印此符号[].

任何提示为什么?

@Override
public void drawObject() {
String text = "";
if (title) {
   text = getGameBoard().getGame().getForeignProfile().getName() + "\n";
}
text = text + getScoreAsString();
getGameBoard().getCanvas().drawText(text, 0, text.length(), getPosition().getX(), getPosition().getY(), getPaint());
}
Run Code Online (Sandbox Code Playgroud)

android text canvas

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

什么是过时的StaticLayout的替代品

应该用什么代替:

StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);
Run Code Online (Sandbox Code Playgroud)

发出以下警告:

警告:已弃用StaticLayout中的[不推荐使用] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean)StaticLayout layout = new StaticLayout(文本,paint,宽度,Alignment.ALIGN_NORMAL,mSpacingMult,mSpacingAdd,false);

android android-layout staticlayout

5
推荐指数
1
解决办法
1332
查看次数

在Android上将文本转换为图像文件

我有一个文本文件(.txt).我想将其转换为图像(.png或.jpg).例如,在白色背景的黑文本.我该如何以编程方式执行此操作?

java android file-format

4
推荐指数
2
解决办法
9418
查看次数

使用canvas.drawText在文本中换行符

我正在做一个 Android 游戏,我正在使用这样的函数在设备屏幕上显示文本:

public void drawString(String text, int x, int y, Paint paint) {
    canvas.drawText(text, x, y, paint);

}
Run Code Online (Sandbox Code Playgroud)

我尝试显示以下消息:

g.drawString("Player: " + playerString+ " :\n" + messageString,SCREENWIDTH / 2, SCREENHEIGHT / 2, paint);
Run Code Online (Sandbox Code Playgroud)

然而,我得到的是一个奇怪的字符(一个正方形),而不是换行符(\n)。

有人可以帮助我吗?

谢谢

java android newline drawtext android-canvas

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

将字母间距设置为drawTextOnPath

我正在使用以下代码来制作旋转轮。

@Override
    public void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        for (int i = 0; i < segmentColors.length; i ++)
        {
            drawDataSet(canvas, i);
        }

        canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth() - getWidth()/2 - dpToPx(5), mTransparentCirclePaint);
    }


protected void drawDataSet(Canvas canvas, int position)
    {
        int color = segmentColors[position];
        float mainArcAngle = ((float) 360/ (float)segmentColors.length);

        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);

        if ( position%2 == 0)
            paint.setColor(color);
        else
            paint.setColor(Color.parseColor("#009f2f"));

        RectF rect = new RectF(0, 0, getWidth(), getWidth());
        canvas.drawArc(rect, (mainArcAngle * position), mainArcAngle, true, paint);

        TextPaint mTextPaint = …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-canvas android-paint

3
推荐指数
1
解决办法
3055
查看次数

如何设置饼图的标签颜色?

我正在使用mpandroidchart库来创建饼图。

我想格式化饼图上的文本标签,但我不知道该怎么做。我试过用

data.setValueTextColor(ContextCompat.getColor(getActivity(),R.color.black));
Run Code Online (Sandbox Code Playgroud)

但是,它只更改数据的值,而不是标签。另外,我想成为饼图中的标签,我也尝试过使用以下代码,

PieEntry entry2=new PieEntry(50-scratches,"Remaining \nScratches");
Run Code Online (Sandbox Code Playgroud)

但是,它没有用。

我的代码如下:

private void setPiechart(float scratches) {

    List<PieEntry> values = new ArrayList<>();

    PieEntry entry1=new PieEntry(scratches,"Scratches");
    PieEntry entry2=new PieEntry(50-scratches,"Remaining \nScratches");

    values.add(entry1);
    values.add(entry2);

    PieDataSet dataSet = new PieDataSet(values,"");

    dataSet.setColors(ContextCompat.getColor(getActivity(),R.color.color_veridoc_gradient1),
            ContextCompat.getColor(getActivity(),R.color.colorBgChat));

    dataSet.setHighlightEnabled(true);
    dataSet.setAutomaticallyDisableSliceSpacing(true);

    dataSet.setSliceSpace(10);

    PieData data=new PieData(dataSet);
    data.setValueTextSize(20f);
    data.setValueTextColor(ContextCompat.getColor(getActivity(),R.color.black));


    pieChart.setData(data);
    Description description=new Description();
    description.setText("Scratches ");
    pieChart.setDescription(description);
    pieChart.setDrawHoleEnabled(true);
    pieChart.setHoleRadius(10f);

    pieChart.animateY(500);

    Legend legend = pieChart.getLegend();
    legend.setEnabled(true);

    legend.setTextColor(Color.BLACK);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        pieChart.setElevation(10);
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的结果是: 在此处输入图片说明

我想做的是简而言之

  1. 更改饼图中的标签颜色(从白色到黑色)
  2. 防止标签超出饼图。(例如,如图所示的剩余划痕)

有人可以帮我吗?

我还尝试了以下链接中提到的这些解决方案。

链接 1 链接 2 …

android mpandroidchart

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