2013-02-14 32 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
相關問題