【问题标题】:Xamarin.Android How do I create a swipeable image gallery using ViewPager?Xamarin.Android 如何使用 ViewPager 创建可滑动的图片库?
【发布时间】:2016-10-07 22:35:24
【问题描述】:

Android 画廊现已弃用,因此我需要使用 ViewPager。我只找到了 Xamarin.Forms 的代码示例,所以如果有人可以帮助我提供 Xamarin.Android 的代码示例,我将不胜感激。

我的问题与Click on Viewpager Xamarin Android不同,因为我不需要点击照片,只需要在图库中滑动图片即可。

【问题讨论】:

  • 有很多教程向您展示如何在 xamarin.android 中制作原生视图。这真的很全面。谷歌一些。
  • 如果其中任何一个都能满足我的需要,我就不会发布这个问题了。
  • 你看过 Cheesebarons 在他的 git repo 上的工作示例吗? github.com/Cheesebaron/ViewPagerIndicator
  • 我现在在同一条船上。到目前为止,我发现的所有教程要么太基础,无法满足我的需要,要么太复杂,以至于我什至无法真正开始使用它们。

标签: c# xamarin android-viewpager xamarin.android


【解决方案1】:

虽然这是一个不同的问题,但这里有一个解决方案,不需要您将图像片段用于简单的滑块。 https://stackoverflow.com/a/33209130/5436000

public class ImageSliderAdapter : PagerAdapter
{
    Context _context;
    List<string> _imageUrls;

    public ImageSliderAdapter (Context context, List<string> imageUrls)
    {
        _imageUrls = imageUrls;
        _context = context;
    }

    public override bool IsViewFromObject (Android.Views.View view, Java.Lang.Object @object)
    {
        return view == ((LinearLayout)@object);
    }

    public override int Count {
        get {
            return _imageUrls.Count;
        }
    }

    public override void DestroyItem (ViewGroup container, int position, Java.Lang.Object objectValue)
    {
    }

    public override Java.Lang.Object InstantiateItem (ViewGroup container, int position)
    {

        View view = container;
        var inflater = _context.GetSystemService (Context.LayoutInflaterService) as LayoutInflater;
        view = inflater.Inflate (Resource.Layout.image_slider_item, null);
        var child = view.FindViewById<ImageView> (Resource.Id.image_slider_item);
        child.Click += (o, e) =>
        {
            //your code here
        };

        Bitmap image = null;
        Task.Run (() => {
            URL url = new URL (_imageUrls [position]);
            image = BitmapFactory.DecodeStream (url.OpenConnection ().InputStream);
        }).ContinueWith (t => {
            (_context as MainView).RunOnUiThread (() => {
                child.SetImageBitmap (image);
            });
        });

        container.AddView (view);
        return view;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多