Bant

Bant, pencere boyutuna göre dinamik olarak uyum sağlayan, kaydırılabilir bir öğe listesi gösterir. İlgili içerik koleksiyonlarını göstermek için bantları kullanın. Bant öğeleri görselleri vurgular ancak öğe boyutuna göre ayarlanan kısa metinler de içerebilir.

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

  • Çoklu göz atma: Farklı boyutlarda öğeler içerir. Fotoğraflar gibi birden fazla öğeye aynı anda göz atmak için önerilir.
  • Kapsamı olmayan: Tek boyutlu 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östermek için özelleştirilebilir.
  • Hero: Odaklanılacak büyük bir resmi öne çıkarır ve küçük bir öğeyle sıradaki 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: Bir seferde kenardan kenara büyük bir öğe gösterir ve dikey olarak kaydırılır. Genişliğinden daha uzun içerikler için önerilir.
Yan yana gösterilen, kapsanmayan ve tam ekran bir bant türü. İçerisinde öğe bulunmayan bant türü birden fazla bant öğesine sahipken tam ekran türü ekranı kaplayan tek bir öğeye sahiptir.
Şekil 1. İçeriksiz (1) ve tam ekran (2) bant türleri.

Bu sayfada, çoklu gezinme ve kapsanmayan bant düzenleri nasıl uygulanacağı gösterilmektedir. Düzen türleri hakkında daha fazla bilgi için Bant Materyali 3 yönergelerine bakın.

API yüzeyi

Çoklu gezinme ve kapsanmayan bantları uygulamak için HorizontalMultiBrowseCarousel ve HorizontalUncontainedCarousel bileşenlerini kullanın. Bu bileşenler aşağıdaki temel parametreleri paylaşır:

  • state: Geçerli öğe dizini 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: Banttaki bitişik öğeler arasındaki boş alanın miktarını tanımlar.
  • contentPadding: Bandın 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 için bunu kullanın.
  • content: Tam sayı dizini alan bir birleştirilebilir işlev. Banttaki her öğenin kullanıcı arayüzünü dizine göre tanımlamak için bu lambda işlevini kullanın.

Bu bileşenler, öğe boyutunu belirtme biçimleri açısından farklılık gösterir:

  • itemWidth (HorizontalUncontainedCarousel için): İçerisinde öğe bulunmayan bir banttaki her öğenin tam genişliğini belirtir.
  • preferredItemWidth (HorizontalMultiBrowseCarousel için): Çoklu göz atma bandındaki öğeler için ideal genişliği önerir. Böylece bileşen, alan izin veriyorsa birden fazla öğe gösterebilir.

Örnek: Çoklu göz atma bandı

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

Kodla ilgili önemli noktalar

  • Banttaki her öğenin verilerini yapılandıran bir CarouselItem veri sınıfı tanımlar.
  • Resim kaynakları ve açıklamalarıyla doldurulan CarouselItem nesneden oluşan bir List oluşturur ve hatırlar.
  • Bir bantta birden fazla öğe göstermek için tasarlanmış HorizontalMultiBrowseCarousel bileşenini kullanır.
    • Bantın durumu, öğelerin toplam sayısının verildiği rememberCarouselState kullanılarak başlatılır.
    • Öğeler, her öğe için optimum genişliği öneren bir preferredItemWidth (burada 186.dp) içerir. Bant, ekrana aynı anda kaç öğe sığabileceğini belirlemek için bu değeri kullanır.
    • itemSpacing parametresi, öğeler arasına küçük bir boşluk ekler.
    • HorizontalMultiBrowseCarousel değerinin sonundaki lambda, CarouselItems değerinde iterasyon yapar. Her iterasyonda, i dizinindeki öğeyi alır ve bunun için bir Image kompozisyonu oluşturur.
    • Modifier.maskClip(MaterialTheme.shapes.extraLarge), her resme önceden tanımlanmış bir şekil maskesi uygulayarak köşelerini yuvarlar.
    • contentDescription, resim için erişilebilirlik açıklaması sağlar.

Sonuç

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

İkisi tam olarak gösterilen, biri ise kısmen ekran dışında olan 3 resim içeren çoklu göz atma bandı.
Şekil 2. Son öğenin kırpıldığı çoklu göz atma bandı.

Örnek: İçerisinde öğe bulunmayan bant

Aşağıdaki snippet, kapsanmayan bir bant uygular:

Kodla ilgili önemli noktalar

  • HorizontalUncontainedCarousel bileşeni, atlı karınca 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, kapsayıcı içermeyen bir bant. Son öğe kısmen görünür ancak kırpılmamıştır.
Şekil 3. Banttaki son öğenin kırpılmadığı, kapsanmayan bir bant.