Xamarin-gallery

提供:Dev Guides
移動先:案内検索

Xamarin-ギャラリー

ギャラリーは、水平スクロール可能なリストにアイテムを表示するために使用されるビューの一種です。 選択したアイテムが中央に表示されます。 この例では、水平方向にスクロール可能な画像を含むギャラリーを作成します。 画像をクリックすると、選択した画像の番号が表示されます。

まず、新しいプロジェクトを作成し、名前を付けます(Gallery App Tutorialなど)。 コーディングを開始する前に、7つの画像を* resource/drawableフォルダー*に貼り付けます。 resources folder の下の main.axml と、線形レイアウトタグの間にあるギャラリーに移動します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="#d3d3d3">
   <Gallery
      android:id="@+id/gallery"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:padding="10dp"/>
</LinearLayout>
*_ImageAdapter_* という新しいクラスを作成します。 このクラスは、上で作成したギャラリーに画像をバインドするために使用されます。

最初のステップは、フィールドを保存するために使用するコンテキスト cont を含むクラスを追加することです。

public class ImageAdapter : BaseAdapter {
   Context cont;
   public ImageAdapter(Context ct) {
      cont = ct;
   }
}

次に、画像を含みそのサイズを返す配列リストをカウントします。

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

次のステップでは、アイテムの位置を取得します。 次のコードは、その方法を示しています。

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

次のステップでは、アダプターによって参照されるアイテムの imageview を作成します。

public override View GetView(int position,View convertView, ViewGroup parent) {
   ImageView img = new ImageView(cont);
   img.SetImageResource(imageArraylist[position]);
   img.SetScaleType(ImageView.ScaleType.FitXy);
   img.LayoutParameters = new Gallery.LayoutParams(200, 100);
   return img;
}

最後のステップでは、 resources.drawable フォルダーに追加した画像への参照を作成します。 これを行うには、画像のコレクションを保持する配列を作成します。 次のコードは、その方法を説明しています。

int[] imageArraylist = {
   Resource.Drawable.img1,
   Resource.Drawable.img2,
   Resource.Drawable.img3,
   Resource.Drawable.img4,
   Resource.Drawable.img5,
   Resource.Drawable.img6,
  };
}

次に、 mainActivity.cs に移動して、OnCreate()メソッドの下に次のコードを挿入します。

Gallery myGallery = (Gallery)FindViewById<Gallery>(Resource.Id.gallery);
myGallery.Adapter = new ImageAdapter(this);
myGallery.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs args) {
   Toast.MakeText(this,
      args.Position.ToString(), ToastLength.Short).Show();
}

最後に、アプリケーションをビルドして実行し、出力を表示します。

ギャラリー