簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM