相关疑难解决方法(0)

自动缩放TextView文本以适应界限

我正在寻找一种最佳方法来调整包装文本的大小TextView,使其适合其getHeight和getWidth界限.我不是简单地寻找一种包装文本的方法 - 我想确保它既包装又小到足以完全适合屏幕.

我在StackOverflow上看到了一些需要自动调整大小的情况,但它们或者是非常特殊的黑客解决方案案例,没有解决方案,或者涉及TextView递归重新绘制,直到它足够小(这是内存密集并迫使用户观看文本逐步收缩每次递归).

但是我确信那里有人找到了一个很好的解决方案,不涉及我正在做的事情:编写几个重度例程来解析和测量文本,调整文本大小,然后重复直到找到一个合适的小尺寸.

TextView用于包装文本的例程是什么?难道不能以某种方式用来预测文本是否足够小?

tl; dr:是否有一种最佳实践方法可以自动调整大小TextView以适应,包裹,在其getHeight和getWidth范围内?

android scale word-wrap textview

811
推荐指数
18
解决办法
38万
查看次数

Android Paint:.measureText()vs .getTextBounds()

我正在测量文本Paint.getTextBounds(),因为我有兴趣获得要渲染的文本的高度和宽度.但是,实际呈现的文本总是比填充.width()Rect信息宽一些getTextBounds().

令我惊讶的是,我进行了测试.measureText(),发现它返回了一个不同的(更高)值.我试一试,发现它是正确的.

为什么他们报告不同的宽度?我怎样才能正确获得高度和宽度?我的意思是,我可以使用.measureText(),但后来我不知道我是否应该相信.height()返回者getTextBounds().

根据要求,这里是重现问题的最小代码:

final String someText = "Hello. I believe I'm some text!";

Paint p = new Paint();
Rect bounds = new Rect();

for (float f = 10; f < 40; f += 1f) {
    p.setTextSize(f);

    p.getTextBounds(someText, 0, someText.length(), bounds);

    Log.d("Test", String.format(
        "Size %f, measureText %f, getTextBounds %d",
        f,
        p.measureText(someText),
        bounds.width())
    );
}
Run Code Online (Sandbox Code Playgroud)

输出显示的差异不仅得到大于1(且没有最后一分钟的舍入误差),也似乎增加与大小(我正要吸引更多的结论,但它可能是完全的字体相关的):

D/Test    (  607): Size 10.000000, measureText 135.000000, …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout

188
推荐指数
6
解决办法
9万
查看次数

Android的FontMetrics中top,ascent,baseline,descent,bottom和leading的含义

这似乎是一个基本问题,但我在SO上找不到类似的问题.在阅读文档时,我无法理解这些概念.我想了解有什么区别之间topascent,也bottomdescent.基准到底在哪里?你有图表来帮我形象化吗?

android fontmetrics

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

在渲染到布局之前获取文本视图的高度

在将 textview 渲染到布局之前,无法找到任何计算文本视图高度的好方法.请帮忙

android textview

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

StaticLayout如何在Android中使用?

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

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

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

android text canvas android-custom-view staticlayout

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

Android:在画布上测量文本高度

我目前正致力于渲染Bitmap,然后我想将其发送到移动打印机.但是,我正在努力测量文本的高度,所以我可以适当地提升y位置.

我的基本位图/画布/绘画配置是这样的(字体大小是16,位图的尺寸是200x400(宽x高)):

public MyRenderer() {
    // Initialize bitmap
    bitmap = Bitmap.createBitmap(200, 400, Bitmap.Config.ARGB_8888);

    // Initialize canvas
    canvas = new Canvas(bitmap);

    // Initialize brush (Paint instance)
    brush = new Paint();
    brush.setTextSize(16);
    brush.setTypeface(Typeface.SANS_SERIF);
    brush.setColor(Color.BLACK);
    brush.setStyle(Paint.Style.FILL);
    brush.setAntiAlias(true);
    brush.setTextAlign(Align.LEFT);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,现在我想做的是:如果我使用Paint的方法drawText,我需要提供x和y坐标.至于x为零(假设左对齐文本)但是对于y,我必须计算我打印的每个文本的高度并将其加起来,这样我就可以跟踪我当前的y位置.

这是奇怪的地方:我使用以下方法来确定文本的高度(使用我先前初始化的Paint对象 - 它被称为"brush"):

public int measureHeight(String text) {
    Rect result = new Rect();
    // Measure the text rectangle to get the height
    brush.getTextBounds(text, 0, text.length(), result);
    return result.height();
}
Run Code Online (Sandbox Code Playgroud)

上述方法为以下文本返回以下值:

  1. " Hello World "返回12的高度
  2. " 相机实例可用于计算3D变换并生成矩阵. "返回高度为16
  3. " Android设计简介:了解创建世界级Android用户界面的原则,构建模块和模式的地方.无论您是UI专业人士还是扮演该角色的开发人员,这些文档都会向您展示如何做出良好的设计决策,无论大小. "返回 …

android paint android-canvas

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

获取包含字体大小的文本高度并设置该高度

我有一个Hello现在称为文本的文本我需要在文本大小增加的文本中应用字体后立即对此说12或18应用fontsize.

所以现在我需要使用paint获取文本高度,包括字体大小.

我尝试过以下涂料:

String finalVal ="Hello";

Paint paint = new Paint();
paint.setTextSize(18);
paint.setTypeface(Typeface.SANS_SERIF);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);

Rect result = new Rect();
// Measure the text rectangle to get the height
paint.getTextBounds(finalVal, 0, finalVal.length(), result);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,请帮忙

编辑

我试图根据textheight动态设置webview的高度我得到单行的文本高度,"Hello"但如果文本中有两行"My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".

android paint android-webview

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

如何在android中的TextView中缩进文本行?

我正在android中编写一个文本,现在需要两行以上,我的问题是如何缩进我的文本行的第二行.

1.my name is qadeer hussain

iam fine how  Ru.
Run Code Online (Sandbox Code Playgroud)

但我想要

1.my name is qadeer hussain

     iam fine how  Ru.
Run Code Online (Sandbox Code Playgroud)

这里第二行不是从一行开始,而是在名称正下方

android

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

使用Canvas Android在填充矩形内绘制文本

如何绘制带有指定边界的填充矩形,并使用Canvas Android绘制该矩形文本?我试过了

mPaint.setColor(Color.GREEN);
canvas.drawText(mText, x, y, mPaint);
mPaint.setColor(Color.BLACK);
canvas.drawRect(x, y, x + w, y + h, mPaint);
Run Code Online (Sandbox Code Playgroud)

但文字不在那个矩形内.任何好友都可以告诉我如何在考虑文本大小的情况下绘制一个围绕指定文本的矩形吗?

android drawing canvas view

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

Android中TextPaint setTextSize的单位是多少?

开发.docs没有说明该单位.像素,dps,cm? http://developer.android.com/reference/android/graphics/Paint.html#setTextSize(float)

从实验来看,最可能的答案是像素,但我不确定.

android

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