![](/img/trans.png)
[英]How to dynamically set text size of all items in a list view based on database value in Android?
[英]Android dynamically list items in rows depending on their size
問題是,我想以編程方式將TAGS(如帖子底部的TAGS)添加到我的屏幕視圖中。 金額將是未知的,但可以說在10范圍內。 我知道我可以使用水平列表視圖,但是我不確定如何以及是否有可能將不合適的標簽包裝到下一行。 我認為不可能。 接下來,使用Gridview是一個選項,但是如果每個標簽的長度不同,如何為每個標簽分配水平空間呢? 有什么辦法可以在不知道金額的情況下連續列出它們,並使它們動態地包裹到“下一行”?
最近,我不得不接受與您所要求的類似的內容。 我最終決定使用TableView
,並動態構造TableRow
。 直到我遇到如何知道何時將新項目添加到現有TableRow
或將行添加到TableView
並開始新項目的問題之前,這似乎都很不錯。
我特別不喜歡但可以解決的一種變通方法(有人甚至稱其為hack)是這樣的:使用如下代碼測量屏幕的寬度:
final Display display = getWindowManager().getDefaultDisplay();
final Point size = new Point();
display.getSize(size);
final WindowManager.LayoutParams params = getWindow().getAttributes();
您將可以在params.width
參數中獲取屏幕的寬度。 我將其乘以0.95
以不嚴格適合行,主要是因為它可能無法正常工作。
因此,現在,您需要有一個循環來處理所有要添加的項目,假設它們是TextView
。 保留已添加寬度的計數,如果新項目的寬度超過寬度,則將其添加到下一行。
totalwidth = 0;
for (TextView tv : myTVitems) {
if (totalwidth + tv.getWidth() < parameters.width * 0.95) {
// Add it to the existing row
totalwidth += tv.getWidth();
}
else {
// Add the `TableRow` to the `TableView` and start a new `TableRow`
totalwidth = 0;
}
}
我是從內存編寫的,因此如果沒有任何顯式強制轉換,可能無法編譯,但這就是這個主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.