Android在设置文本和渲染之前获取textview宽度和高度

时间:2016-04-14 08:48:02

标签: android textview width

我正在尝试设置文本视图的宽度。这是我正在使用的代码:

.table-bordered.no-outside-borders {
    border: none;
}

.table-bordered.no-outside-borders>thead>tr>td:first-child,
.table-bordered.no-outside-borders>thead>tr>th:first-child,
.table-bordered.no-outside-borders>tfoot>tr>td:first-child,
.table-bordered.no-outside-borders>tfoot>tr>td:first-child,
.table-bordered.no-outside-borders>tbody>tr>td:first-child,
.table-bordered.no-outside-borders>tbody>tr>th:first-child {
    border-left: none;
}

.table-bordered.no-outside-borders>thead>tr>td:last-child,
.table-bordered.no-outside-borders>thead>tr>th:last-child,
.table-bordered.no-outside-borders>tfoot>tr>td:last-child,
.table-bordered.no-outside-borders>tfoot>tr>th:last-child,
.table-bordered.no-outside-borders>tbody>tr>td:last-child,
.table-bordered.no-outside-borders>tbody>tr>th:last-child {
    border-right: none;
}

但是此方法返回更大的宽度。例如:

  1. 我需要设置textview值" 6978"
  2. 这个方法计算宽度= 46(顺便说一下dp中的返回值或sp?我在dp中设置,导致px这个值不够。)
  3. 如果我设置textview的宽度为46 dp或sp,TextView将有额外的位置 extra place. to large width
  4. 我需要获得与width =" wrap_content"一致的宽度值。 normal

    TextView大小和字体具有默认值。

2 个答案:

答案 0 :(得分:0)

试试这个,你将获得像素值;

 int width=convertToPixel(textView.getWidth());
 int height=convertToPixel(textView.getHeight());


private int convertToPixel(int n) {
        Resources r = getResources();
        float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, n, r.getDisplayMetrics());
        return (int) px;
    }

答案 1 :(得分:0)

在您提出请求后我知道了一段时间,但您是否在OnGlobalLayoutListener中运行支票?

如果没有,则视图不会完全在屏幕上绘制,并且您不会有尺寸可用。

在onGlobalLayout()中,您可以调用measuredWidth和measuredHeight。

我希望这有助于,如果不是你,那么其他人。