Bagikan melalui


Kontrol Galeri Xamarin.Android

Gallery adalah widget tata letak yang digunakan untuk menampilkan item dalam daftar gulir horizontal dan memposisikan pilihan saat ini di tengah tampilan.

Penting

Widget ini tidak digunakan lagi di Android 4.1 (API level 16).

Dalam tutorial ini, Anda akan membuat galeri foto lalu menampilkan pesan toast setiap kali item galeri dipilih.

Setelah tata Main.axml letak diatur untuk tampilan konten, Gallery diambil dari tata letak dengan FindViewById. Tje Adapter properti kemudian digunakan untuk mengatur adaptor kustom ( ImageAdapter) sebagai sumber untuk semua item yang akan ditampilkan di dallery. ImageAdapter dibuat di langkah berikutnya.

Untuk melakukan sesuatu saat item di galeri diklik, delegasi anonim berlangganan ItemClick Acara. Ini menunjukkan Toast yang menampilkan posisi indeks (berbasis nol) dari item yang dipilih (dalam skenario dunia nyata, posisi dapat digunakan untuk mendapatkan gambar berukuran penuh untuk beberapa tugas lain).

Pertama, ada beberapa variabel anggota, termasuk array ID yang mereferensikan gambar yang disimpan dalam direktori sumber daya yang dapat digambar (Sumber Daya/dapat digambar).

Selanjutnya adalah konstruktor kelas, di mana ContextImageAdapter untuk instans ditentukan dan disimpan ke bidang lokal. Selanjutnya, ini menerapkan beberapa metode yang diperlukan yang diwariskan dari BaseAdapter. Konstruktor dan Count properti adalah penjelasan mandiri. Biasanya GetItem(int) harus mengembalikan objek aktual pada posisi yang ditentukan dalam adaptor, tetapi diabaikan untuk contoh ini. Juga GetItemId(int) harus mengembalikan id baris item, tetapi tidak diperlukan di sini.

Metode melakukan pekerjaan untuk menerapkan gambar ke ImageView yang akan disematkan dalam Gallery Dalam metode ini, anggota Context digunakan untuk membuat baru ImageView. Tje ImageView disiapkan dengan menerapkan gambar dari array lokal sumber daya yang dapat digambar, mengatur Gallery.LayoutParams tinggi dan lebar untuk gambar, mengatur skala agar pas ImageView dimensi, lalu akhirnya mengatur latar belakang untuk menggunakan atribut bergaya yang diperoleh di konstruktor.

Lihat ImageView.ScaleType untuk opsi penskalaan gambar lainnya.

Panduan

Mulai proyek baru bernama HelloGallery.

Screenshot of new Android project in the New Solution dialog

Temukan beberapa foto yang ingin Anda gunakan, atau unduh gambar sampel ini. Tambahkan file gambar ke direktori Sumber Daya/Gambar proyek. Di jendela Properti , atur Tindakan Build untuk masing-masing ke AndroidResource.

Buka Sumber Daya/Tata Letak/Main.axml dan sisipkan yang berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gallery"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

Buka MainActivity.cs dan sisipkan kode berikut untuk OnCreate() Metode:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Set our view from the "main" layout resource
    SetContentView (Resource.Layout.Main);

    Gallery gallery = (Gallery) FindViewById<Gallery>(Resource.Id.gallery);

    gallery.Adapter = new ImageAdapter (this);

    gallery.ItemClick += delegate (object sender, Android.Widget.AdapterView.ItemClickEventArgs args) {
        Toast.MakeText (this, args.Position.ToString (), ToastLength.Short).Show ();
    };
}

Buat kelas baru yang disebut ImageAdapter subkelas BaseAdaptertersebut :

public class ImageAdapter : BaseAdapter
{
    Context context;

    public ImageAdapter (Context c)
    {
          context = c;
    }

    public override int Count { get { return thumbIds.Length; } }

    public override Java.Lang.Object GetItem (int position)
    {
          return null;
    }

    public override long GetItemId (int position)
    {
          return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public override View GetView (int position, View convertView, ViewGroup parent)
    {
          ImageView i = new ImageView (context);

          i.SetImageResource (thumbIds[position]);
          i.LayoutParameters = new Gallery.LayoutParams (150, 100);
          i.SetScaleType (ImageView.ScaleType.FitXy);

          return i;
    }

    // references to our images
    int[] thumbIds = {
            Resource.Drawable.sample_1,
            Resource.Drawable.sample_2,
            Resource.Drawable.sample_3,
            Resource.Drawable.sample_4,
            Resource.Drawable.sample_5,
            Resource.Drawable.sample_6,
            Resource.Drawable.sample_7
     };
}

Jalankan aplikasi lagi. Ini akan terlihat seperti cuplikan layar di bawah ini:

Screenshot of HelloGallery displaying sample images

Referensi

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.