Поделиться через


Элемент управления коллекции Xamarin.Android

Gallery — это мини-приложение макета, используемое для отображения элементов в списке горизонтальной прокрутки и размещения текущего выделения в центре представления.

Внимание

Это мини-приложение было устарело в Android 4.1 (уровень API 16).

В этом руководстве вы создадите коллекцию фотографий, а затем отобразите всплывающее сообщение при каждом выборе элемента коллекции.

После установки макета Main.axml для представления Gallery содержимого он записывается из макета с FindViewByIdпомощью . Токен Adapter Затем свойство используется для задания пользовательского адаптера ( ImageAdapter) в качестве источника для всех элементов, отображаемых в dallery. Он ImageAdapter создается на следующем шаге.

Чтобы сделать что-то, когда элемент в коллекции щелкается, анонимный делегат подписан на СобытиеItemClick . Отображается Toast отображает позицию индекса (от нуля) выбранного элемента (в реальном мире позиция может использоваться для получения полного размера изображения для какой-то другой задачи).

Во-первых, есть несколько переменных-членов, включая массив идентификаторов, ссылающихся на изображения, сохраненные в каталоге ресурсов для рисования (resources/drawable).

Далее — конструктор класса, где Context для экземпляра ImageAdapter определяется и сохраняется в локальном поле. Далее это реализует некоторые необходимые методы, унаследованные от BaseAdapter. Конструктор и Count свойство является самообъяснительным. Обычно GetItem(int) должен возвращать фактический объект в указанной позиции в адаптере, но он игнорируется для этого примера. Также GetItemId(int) должен возвращать идентификатор строки элемента, но здесь он не нужен.

Метод выполняет работу для применения изображения к объекту ImageView это будет внедрено в Gallery В этом методе член Context используется для создания нового ImageView. Токен ImageView подготавливается путем применения изображения из локального массива рисуемых ресурсов, задание Gallery.LayoutParams высота и ширина изображения, установка шкалы в соответствии с ImageView измерения, а затем, наконец, задайте фон для использования атрибута с возможностью стиля, полученного в конструкторе.

См ImageView.ScaleType . другие параметры масштабирования изображений.

Пошаговое руководство

Запустите новый проект с именем HelloGallery.

Screenshot of new Android project in the New Solution dialog

Найдите некоторые фотографии, которые вы хотите использовать, или скачайте эти примеры изображений. Добавьте файлы изображений в каталог ресурсов или рисования проекта. В окне "Свойства" задайте действие сборки для каждого из них в AndroidResource.

Откройте resources/Layout/Main.axml и вставьте следующее:

<?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"
/>

Откройте MainActivity.cs и вставьте следующий код для OnCreate() Метод:

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 ();
    };
}

Создайте новый класс, называемый ImageAdapter подклассами BaseAdapter:

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
     };
}

Запустите приложение. Он должен выглядеть следующим образом:

Screenshot of HelloGallery displaying sample images

Ссылки

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.