TextView已调整大小以适合文本

时间:2011-04-14 11:39:28

标签: android textview custom-component text-size

我正在开发一个自定义视图来调整textview中的文本大小,以便它适合(我不想进行椭圆化)。

我遇到的麻烦是,在更改文本大小时,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();
    }
}

任何人都可以给我一个正确的方向来解决这个问题吗?

1 个答案:

答案 0 :(得分:-3)

在xml文件中编写以下代码。

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

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