2017-04-24 19 views
0

我造屏用3份與weightSum與劃分:現在有沒有辦法在android中計算字符串高度/重量?

 android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight=".....my choose" 

,我成功通過變化動態地改變分工佈局PARAM。我的問題是,我的第一部分包含textView包含字符串,我不知道他的長度(它每次都會改變)。它可能很短或很長,所以對於正常情況下的一切都好,但如果字符串非常長,我想給第一部分更多來自屏幕的「重量」,我希望它與字符串的長度有關。

問題是,如果我能知道某個字符串的「高度」,並從那裏計算出字符串需要多少重量,那麼我可以再次更改分區,或者也許還有另一種方法來處理我的情況?

謝謝大家!

+0

的android:layout_width =「WRAP_CONTENT」僅適用於文本情況下..希望工程......如果文字較小的權重1意志工作 –

+0

@AbhishekSingh謝謝,但它沒有幫助,因爲它包含TextView的佈局也已android:layout_weight:「..」所以它總是一樣的大小... – OriEng

回答

0

更好的使用算法來查找字符串的長度,一旦找到長度,然後以編程方式更改文本大小或重量。

+0

我知道字符串的長度,但問題是什麼大小才能改變重量?我需要一些關於此字符串長度的細節(可能是高度或其他內容...) – OriEng

+0

字符串的高度和寬度隨文本大小和字體系數而變化。所以請根據字體系列進行更改。 http://alvinalexander.com/photos/android-roboto-fonts-examples。 –

+0

謝謝,我嘗試了一些不同的解決方案,使用Paint和Rect對象通過字體和大小進行計算,但總是改變它的寬度,高度始終與此相同。 – OriEng

0

這是一種破解。您可以使用getWidthTextView其中您設置String並在該寬度的基礎上,分配您的weight

例如,如果您的TextViewyourTextView

yourTextView.setText(yourString); 
int width = yourTextView.getWidth; 
if(width > THRESHOLD) 
    setWeight(YOUR_VALUE) 
else setWeight(YOUR_VALUE) 

注意

如果你不能馬上找到寬度,你可以使用Handler,因爲它需要一段時間來設置文本。

yourTextView.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     width = yourTextView.getWidth(); 
    } 
}, 300); 
+0

謝謝您的回答。我測試它,嘗試獲取我的TextView的寬度和高度。寬度總是相同的(這是有道理的,因爲它不是變化),但問題在於高度 - 我測試了不同長度的字符串:20,40,80,120,200個字符。在20結果是68,在40結果是127,然後在80,120,200它是相同的結果-128。所以也許它是有限的或什麼,但我認爲從getHeight /寬度返回與TextView中的字符串不相關.. – OriEng

相關問題