2015-09-21 94 views
0

我想知道是否有方法可以在佈局中找出可用於視圖的空間。Android:在佈局中獲取寬度

爲了更精確一點:在活動中,兩個TextView並排顯示。由於第二個包含相當多的文本,我想檢查一下,該文本是否可以在屏幕上顯示,或者它是否太大。如果是這種情況,我會顯示較小版本的文本(因爲默認情況下Android不會在多行顯示此文本)。 目前我使用一些像這樣的代碼:

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
Display display = windowManager.getDefaultDisplay(); 
Point screenSize = new Point(); 
display.getSize(screenSize); 
int screenWidth = screenSize.x; 

if (tvTitle.getWidth() + tvDescription.getWidth() > screenWidth) { 
    tvDescrition.setText(getString(R.string.descritption_short)); 
} 

但是,這並不工作:寬度通常比屏幕小,因此使用長版本。但是:文字沒有完全顯示,最後的單詞總是缺失。

我想問題是,佈局是使用填充,因此減少了真正可用的空間。

那麼如何解決這個問題呢?任何想法都非常受歡迎:-)

回答

0

您可以以像素爲單位測量文本(字符串)的寬度。使用這種方法:

Paint.measureText(titleString + descriptionString);

如果超過總screen width - horizontal margin - horizontal padding,那麼你可以去的簡短說明。

+0

謝謝!我的腦海中出現了兩個問題: 爲什麼您使用'measureText'而不是'TextView.getWidth()'? 如何獲得元素的邊距? – portux