Bant

Bant, pencere boyutuna göre dinamik olarak uyarlanan, kaydırılabilir bir öğe listesi gösterir. İlgili içeriklerden oluşan bir koleksiyonu sergilemek için bantları kullanın. Dönen öğeler görselleri vurgular ancak öğe boyutuna uyum sağlayan kısa metinler de içerebilir.

Farklı kullanım alanlarına uygun dört rulo düzeni vardır:

  • Çoklu göz atma: Farklı boyutlarda öğeler içerir. Fotoğraflar gibi birçok öğeye aynı anda göz atmak için önerilir.
  • Sınırsız: Tek boyutta olan ve ekranın kenarından taşan öğeler içerir. Her öğenin üstünde veya altında daha fazla metin ya da başka bir kullanıcı arayüzü gösterecek şekilde özelleştirilebilir.
  • Hero: Odaklanılacak büyük bir resmi vurgular ve küçük bir öğeyle bir sonraki içeriğe göz atma imkanı sunar. Film veya program küçük resimleri gibi vurgulamak istediğiniz içerikleri öne çıkarmak için önerilir.
  • Tam ekran: Tek seferde bir adet kenardan kenara büyük öğe gösterir ve dikey olarak kaydırılır. Yüksekliği genişliğinden fazla olan içerikler için önerilir.
Sınırlanmamış ve tam ekran bant türü yan yana gösteriliyor. Sınırsız bant türünde birden fazla bant öğesi bulunurken tam ekran bant türünde ekranı kaplayan tek bir öğe bulunur.
Şekil 1. Sınırsız (1) ve tam ekran (2) bant türleri.

Bu sayfada, çoklu göz atma ve bağımsız bant düzenlerini nasıl uygulayacağınız gösterilmektedir. Düzen türleri hakkında daha fazla bilgi için Carousel Material 3 yönergelerine bakın.

API yüzeyi

Çoklu göz atma ve sınırsız bantları uygulamak için HorizontalMultiBrowseCarousel ve HorizontalUncontainedCarousel bileşenlerini kullanın. Bu composable'lar aşağıdaki temel parametreleri paylaşır:

  • state: Mevcut öğe dizinini ve kaydırma konumunu yöneten bir CarouselState örneği. Bu durumu rememberCarouselState { itemCount } kullanarak oluşturun. Burada itemCount, banttaki toplam öğe sayısıdır.
  • itemSpacing: Atlı karıncadaki bitişik öğeler arasındaki boşluk miktarını tanımlar.
  • contentPadding: Dönen öğenin içerik alanının etrafına dolgu uygular. İlk öğeden önce veya son öğeden sonra boşluk eklemek ya da kaydırılabilir bölgedeki öğeler için kenar boşlukları sağlamak amacıyla bu özelliği kullanın.
  • content: Tam sayı dizini alan bir composable işlev. Dizine göre banttaki her öğenin kullanıcı arayüzünü tanımlamak için bu lambda'yı kullanın.

Bu composable'lar, öğe boyutunu belirtme şekilleri açısından farklılık gösterir:

  • itemWidth (HorizontalUncontainedCarousel için): Sınırsız bir rulo öğesindeki her bir öğenin tam genişliğini belirtir.
  • preferredItemWidth (HorizontalMultiBrowseCarousel için): Çoklu göz atma bandındaki öğeler için ideal genişliği önererek bileşenin, alan izin veriyorsa birden fazla öğe göstermesini sağlar.

Örnek: Çoklu göz atma bandı

Bu snippet, çoklu göz atma bandı uygular:

Kodla ilgili önemli noktalar

  • Bandın her bir öğesi için verileri yapılandıran bir CarouselItem veri sınıfı tanımlar.
  • Resim kaynakları ve açıklamalarla doldurulmuş CarouselItem nesneden oluşan bir List oluşturur ve hatırlar.
  • Birden fazla öğeyi bir bantta görüntülemek için tasarlanmış HorizontalMultiBrowseCarousel composable'ını kullanır.
    • Dönen öğeler listesinin durumu, toplam öğe sayısını belirten rememberCarouselState kullanılarak başlatılır.
    • Öğelerin bir preferredItemWidth (burada 186.dp) değeri vardır. Bu değer, her öğe için en uygun genişliği gösterir. Rulo, ekrana aynı anda kaç öğenin sığabileceğini belirlemek için bu değeri kullanır.
    • itemSpacing parametresi, öğeler arasında küçük bir boşluk ekler.
    • HorizontalMultiBrowseCarousel işlevinin sonundaki lambda, CarouselItems üzerinde iterasyon yapar. Her iterasyonda, i dizinindeki öğeyi alır ve bu öğe için bir Image composable oluşturur.
    • Modifier.maskClip(MaterialTheme.shapes.extraLarge), her resme önceden tanımlanmış bir şekil maskesi uygulayarak köşelerini yuvarlatır.
    • contentDescription, resim için erişilebilirlik açıklaması sağlar.

Sonuç

Aşağıdaki resimde, önceki snippet'in sonucu gösterilmektedir:

İkisi tamamen gösterilen ve biri kısmen ekran dışında olan 3 resimli çoklu göz atma rulosu.
Şekil 2. Son öğesi kırpılmış, çoklu göz atma bandı.

Örnek: Sınırsız rulo

Aşağıdaki snippet, bağımsız bir bant uygular:

Kodla ilgili önemli noktalar

  • HorizontalUncontainedCarousel composable'ı, bant düzenini oluşturur.
    • itemWidth parametresi, banttaki her öğe için sabit bir genişlik ayarlar.

Sonuç

Aşağıdaki resimde, önceki snippet'in sonucu gösterilmektedir:

3 öğe içeren sınırsız bir bant. Son öğe kısmen görünür ancak kırpılmaz.
Şekil 3. Rulodaki son öğenin kırpılmadığı, sınırlanmamış bir rulo.