以编程方式调整文本大小,从Viewbounds中删除文本,修复?

时间:2013-02-14 20:05:37

标签: android interface resize textview

我正在尝试调整线性布局中的行,具体取决于布局中的行数(布局具有固定高度)。这些行应该始终完全填充父布局。所以1行是父级的完整大小,2行都是大小的一半等。 这是有效的,我现在正在尝试调整文本大小,但是当我调整它时它会被切断,即使textview非常大(我开启了果冻豆的show view bounds功能)

private void setHeightOfRows(ViewGroup parent) {
    int height = parent.getHeight();
    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        LinearLayout.LayoutParams p = (LayoutParams) parent.getChildAt(i).getLayoutParams();
        p.height = height / childCount;
        parent.getChildAt(i).setLayoutParams(p);
        ((ViewGroup) parent.getChildAt(i)).setClipChildren(false);
        Log.i("FontSize", "Set font size to " + 10 / childCount);
        ((TextView) parent.getChildAt(i).findViewById(R.id.name_text)).setTextScaleX(10 / childCount);// .setTextSize(10/childCount);
    }
}

此方法在ViewTreeObserver中执行,因此在呈现UI之后。

如何在不切断文本的情况下调整文本大小?

2 个答案:

答案 0 :(得分:0)

SetTextScaleX沿X方向(水平)拉伸文本。它看起来更像是你想缩小文字,所以它从上到下较小,对吧?在这种情况下,你不需要setTextScaleX,你想要setTextSize。

答案 1 :(得分:0)

简单的问题。必须存在简单的解决方案。 :)

  • 您是否考虑过使用android:paddingandroid:margin
  • minHeaight和minWidth怎么样?

  • 如果您通过代码进行操作,那么setPadding也必须有类似的保证金。
  • setMinHeightsetMinWidth