Java 在Android中如何在可扩展字符串之间留出空间? 代码:
我从上面得到的结果是: 上述代码的问题是:Java 在Android中如何在可扩展字符串之间留出空间? 代码:,java,android,android-layout,android-activity,Java,Android,Android Layout,Android Activity,我从上面得到的结果是: 上述代码的问题是: 如何在两个spannable字符串之间添加空格 如何在矩形的开头和字符串的第一个字符(类似于矩形的结尾)添加空格。我试图通过以下代码添加空间: public class CustomDrawble extends ReplacementSpan { private int mBackgroundColor; private int mForegroundColor; public CustomDrawble(int backgroundCol
- 如何在两个
字符串之间添加空格spannable
- 如何在矩形的开头和字符串的第一个字符(类似于矩形的结尾)添加空格。我试图通过以下代码添加空间:
public class CustomDrawble extends ReplacementSpan { private int mBackgroundColor; private int mForegroundColor; public CustomDrawble(int backgroundColor, int foregroundColor) { this.mBackgroundColor = backgroundColor; this.mForegroundColor = foregroundColor; } @Override public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) { return Math.round(measureText(paint, text, start, end)); } @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { float padding = 4f; RectF rect = new RectF(x, top + 3, x + measureText(paint, text, start, end) + 10, bottom + 10); paint.setColor(mBackgroundColor); canvas.drawRoundRect(rect, 10,10,paint); paint.setColor(mForegroundColor); canvas.drawText(text, start, end, x, y, paint); } private float measureText(Paint paint, CharSequence text, int start, int end) { return paint.measureText(text, start, end); } }
spannable
字符串之间没有足够的空格
我怎样才能使它正确
编辑-1
使用这个rectfrect=newrectf(x-5,top+3,x+measureText(paint,text,start,end)+5,bottom+10)代码>
看第一个,它从起点开始略微切入。但是如果我使用上面的配置,我在两个字符串中没有足够的空间。这是主要问题。从矩形的末尾删除额外的像素将解决跨距之间没有空间的问题
因此,从右侧的参数中删除+10
像这样:
RectF rect = new RectF(x+10, top + 3, x + measureText(paint, text, start, end) + 10, bottom + 10);
RectF rect = new RectF(x, top + 3, x + measureText(paint, text, start, end), bottom + 10);
还要在开始时添加空格,请在开始时放置一些负边距
像这样:
RectF rect = new RectF(x+10, top + 3, x + measureText(paint, text, start, end) + 10, bottom + 10);
RectF rect = new RectF(x, top + 3, x + measureText(paint, text, start, end), bottom + 10);
下图将直观地解释这一点:
事实上,我在发布此问题之前尝试过负值:)顺便说一句,在编辑1部分签出最新的排列对于编辑1,您可以从左右两个方向再分割几个像素。因此,我在问题中提出了一个问题:如何在两个可跨越的字符串之间提供空间:)是的,我得到了你的问题:)并按照我在回答中解释的方式减少字符串周围的填充,前面的评论会有所帮助。我正在尝试并会让你知道