2013-02-14 63 views
0

我正在尝试调整线性布局中的行大小,具体取决于布局中的行数(布局具有固定的高度)。行应该总是完全填充父布局。所以1行是父级的全部大小,2行都是大小的一半等。 这个工程,我现在试图调整文本的大小,但它调整大小时被切断,即使textview是apearently足够大(I接通果冻豆的放映视图边界功能)以编程方式调整文本大小,修复了Viewbounds中的文本?

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被呈现。

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

回答

0

SetTextScaleX在X方向(水平方向)拉伸文本。它看起来更像是你想缩小文本,使其从较小的顶部到底部,对吧?在这种情况下,你不想setTextScaleX,你想setTextSize。

+0

这是没问题的,我试过setTextSize藏汉,文本才能正确调整,错误的是,文本被切断顶部和底部的地方它不应该是 – 2013-02-14 20:16:13

+0

SetScaleX根本不会影响顶部和底部的截止。它水平延伸东西。如果您在截断顶部和底部时遇到问题,则需要使用不同的字体大小,这是setTextSize的作用。你在那里设置了多大的尺寸? 10/childCount不正确,您应该使用Paint.measureText以像素为单位查找字符串的高度,并将字体更改为更小和更小的字体,直到找到适合给定空间的字体为止。 – 2013-02-14 20:20:10

+0

是的,我很抱歉,我只是将这段代码从我的开发中剪掉了,它非常混乱,我先setTextSize,然后再清理一遍,再次发布,等一下! – 2013-02-14 20:26:52

0

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

  • 您是否考虑过使用android:paddingandroid:margin
  • minHeaight和minWidth如何?

OR

  • 如果你的代码做,有一个setPadding必须有保证金类似的事情了。
  • 有一个setMinHeightsetMinWidth
相关问题