【问题标题】:TextView Gravity.CENTER not centering VerticallyTextView Gravity.CENTER 不垂直居中
【发布时间】:2013-10-25 06:55:21
【问题描述】:

我有一个 TextView tv ,我在上面写了一些文字。然后从 TextView 中提取一个位图,然后将这个位图绘制在画布上。我希望 TextView 中的文本垂直和水平居中,为此我使用 tv.setGravity(Gravity.CENTER)。 然而,文本最终仅水平居中。 以下是创建 TextView 并设置所有参数的代码:

tv.layout(0, 0, displayWidth, displayHeight);
tv.setTextSize(60);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GREEN);
tv.setGravity(Gravity.CENTER);
tv.setText(text);
tv.setDrawingCacheEnabled(true);
textBmp = tv.getDrawingCache().copy(Bitmap.Config.ARGB_8888, true);
tv.setDrawingCacheEnabled(false);

这是我将它绘制到画布中的方式

protected void onDraw(Canvas canvas) {

        canvas.drawBitmap(textBmp, 0, 0, null);

    }
}

我该怎么做才能使文本也垂直居中。

【问题讨论】:

    标签: android textview centering gravity


    【解决方案1】:

    你下面的行可能是问题:

    tv.layout(0, 0, displayWidth, displayHeight);
    

    layout 函数的文档说明如下:

    public void layout (int l, int t, int r, int b)
    
    Parameters: 
    l : Left position, relative to parent
    t : Top position, relative to parent 
    r : Right position, relative to parent
    b : Bottom position, relative to parent 
    

    因此,您要求您的 TextView 与父级的顶部和左侧没有距离。

    【讨论】:

    • 不幸的是,事实并非如此。刚刚尝试使用大于 0 的值,但仍然相同。使用该行,我只是在定义我希望 TextView 有多大,在这种情况下,它与其父级一样大。
    • 好的。这给了你什么? tv.layout(displayWidth/4, displayHeight/4, displayWidth/4, displayHeight/4); ?
    • 使所有四个值都相同会产生一些 NullPointerException。我对它们进行了一些更改,以使顶部和左侧的值小于底部和右侧的值。结果还是一样。它只会水平居中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多