6

我正在开发一个自定义视图来调整文本视图中的文本大小,使其适合(我不想省略)。

我遇到的问题是,在更改文本大小时,不会重新测量 textview 本身。我一直在查看源代码,发现 setTextSize() 正在调用以下内容:

nullLayouts();
requestLayout();
invalidate();

所以应该重新测量。这可能是一个错误,因为它在 2.3 而不是 1.6、1.5 和 2.1 仿真器上运行良好。

这是一段代码,请注意 textview 已扩展:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    if(w == 0 && h == 0) {
        setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultSize);
    }

    updateView();
}

private void updateView() {
    int viewWidth = getViewWidth();
    float textWidth = getTextWidth();

    float textSize = textSize();
    while(textWidth > viewWidth && textSize >= MIN_TEXT_SIZE) {

        setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize-1);

        textSize = getTextSize();

        textWidth = getTextWidth();
    }
}

谁能给我提示正确的方向来解决这个问题?

4

1 回答 1

-3

在您的 xml 文件中写入以下代码。

<TextView
  android:layout_height="40dip"
  android:layout_width="100dip"/>

简而言之,在您的 xml 文件中设置 TextView 的固定大小。

于 2011-06-24T06:36:19.083 回答