輪轉介面

輪轉介面會顯示可捲動的項目清單,這些項目會根據視窗大小動態調整。使用輪轉介面展示相關內容集合。輪轉介面項目著重於視覺效果,但也可以包含可隨項目大小調整的簡短文字。

輪轉介面有四種版面配置,可配合不同用途:

  • 多瀏覽:包含不同尺寸的商品。建議用於瀏覽多個項目 (例如相片)。
  • Uncontained:包含單一大小且會流過螢幕邊緣的項目。可自訂顯示更多文字或其他 UI,並置於每個項目的上方或下方。
  • 主圖:以大圖片突顯重點,並透過小圖片提供相關內容的預覽畫面。建議用於強調你想強調的內容,例如電影或節目的縮圖。
  • 全螢幕:一次顯示一個從邊到邊的大型項目,並垂直捲動。建議用於高度大於寬度的內容。
並排顯示不含容器和全螢幕的輪轉介面類型。不含容器的輪轉介面類型含有多個輪轉介面項目,而全螢幕輪轉介面則只有一個項目占滿畫面
圖 1. 不含邊框 (1) 和全螢幕 (2) 輪轉介面類型。

本頁說明如何實作多瀏覽和不含容器的輪轉介面版面配置。如要進一步瞭解版面配置類型,請參閱 Carousel Material 3 指南

API 介面

如要實作多瀏覽和不含容器的輪轉介面,請使用 HorizontalMultiBrowseCarouselHorizontalUncontainedCarousel 可組合函式。這些可組合項共用下列重要參數:

  • state:管理目前項目索引和捲動位置的 CarouselState 例項。使用 rememberCarouselState { itemCount } 建立此狀態,其中 itemCount 是輪轉介面中的項目總數。
  • itemSpacing:定義輪轉介面中相鄰項目之間的空白空間大小。
  • contentPadding:在輪轉介面的內容區域周圍套用邊框間距。您可以使用這個屬性,在第一個項目之前或最後一個項目之後新增間距,或是為捲動區域中的項目提供邊界。
  • content:可接收整數索引的可組合函式。使用這個 lambda 函式,根據輪轉介面中的索引定義每個項目的 UI。

這些可組合項的項目大小指定方式有所不同:

  • itemWidth (適用於 HorizontalUncontainedCarousel):指定未包含的輪轉介面中每個項目的確切寬度。
  • preferredItemWidth (適用於 HorizontalMultiBrowseCarousel):建議多瀏覽輪轉介面中項目的理想寬度,讓元件在空間許可的情況下顯示多個項目。

範例:多瀏覽輪轉介面

這個程式碼片段會實作多瀏覽輪轉介面:

程式碼的重點

  • 定義 CarouselItem 資料類別,為輪轉介面中的每個元素建構資料結構。
  • 建立並記住 CarouselItem 物件的 List,填入圖片資源和說明。
  • 使用 HorizontalMultiBrowseCarousel 可組合函式,這是專門用於在輪轉介面中顯示多個項目。
    • 輪轉介面的狀態會使用 rememberCarouselState 進行初始化,並提供項目的總數。
    • 項目具有 preferredItemWidth (此處為 186.dp),可建議每個項目的最佳寬度。輪轉介面會使用這個值,判斷一次可在畫面上顯示多少個項目。
    • itemSpacing 參數會在項目之間加入小間距。
    • HorizontalMultiBrowseCarousel 的結尾 lambda 會逐一處理 CarouselItems。在每次迭代中,它會擷取索引 i 的項目,並為該項目算繪 Image 可組合項。
    • Modifier.maskClip(MaterialTheme.shapes.extraLarge) 會將預先定義的形狀遮罩套用至每個圖片,讓圖片的邊角變圓。
    • contentDescription 會提供圖片的無障礙說明。

結果

下圖顯示上述程式碼片段的結果:

包含 3 張圖片的多瀏覽輪轉介面,其中 2 張圖片會完整顯示,另一張則會部分顯示在畫面外。
圖 2. 多瀏覽輪轉介面,其中最後一個項目已裁剪。

範例:不含容器的輪轉介面

以下程式碼片段實作不含容器的輪轉介面:

程式碼的重點

  • HorizontalUncontainedCarousel 可組合函式會建立輪轉介面版面配置。
    • itemWidth 參數可為輪轉介面中的每個項目設定固定寬度。

結果

下圖顯示上述程式碼片段的結果:

包含 3 個項目的無邊框輪轉介面。最後一個項目會部分顯示,但不會裁剪。
圖 3. 未包含的輪轉介面,其中輪轉介面中的最後一個項目不會裁剪。