android – 如何动态添加图像到包含imageview的viewpager?

android – 如何动态添加图像到包含imageview的viewpager?,第1张

概述我的main_layout中有一个viewpager.视图寻呼机仅包含RelativeLayout包装的 ImageView 我想要做的是当用户点击按钮时,它会将图像添加到该特定的viewpager. 我在stackoverflow上找到了这个答案(我认为这与我的问题有关),但是我完全迷失了这段代码. Dynamically Adding View to viewpager 到目前为止这是我的代码 我的main_layout中有一个vIEwpager.视图寻呼机仅包含relativeLayout包装的 ImageVIEw

我想要做的是当用户点击按钮时,它会将图像添加到该特定的vIEwpager.

我在stackoverflow上找到了这个答案(我认为这与我的问题有关),但是我完全迷失了这段代码.

Dynamically Adding View to viewpager

到目前为止这是我的代码:

MainActivity.Java

private PagerAdapter pAdapter;private VIEwPager photopager;...pAdapter = new galleryPagerAdapter(getApplicationContext());photopager.setAdapter(pAdapter);galleryPagerAdapter.javapublic class galleryPagerAdapter extends PagerAdapter{    private final Context context;    LayoutInflater inflater;    private final int[] galImages = new int[] {        R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher    };    public galleryPagerAdapter(Context context){        this.context=context;    }    @OverrIDe    public int getCount() {        return galImages.length;    }    @OverrIDe    public boolean isVIEwFromObject(VIEw vIEw,Object object) {        return vIEw == object;    }    @OverrIDe    public Object instantiateItem(VIEwGroup container,int position) {        ImageVIEw imageVIEw = new ImageVIEw(context);        int padding = 10;        imageVIEw.setpadding(padding,padding,padding);        imageVIEw.setScaleType(ImageVIEw.ScaleType.MATRIX);        imageVIEw.setimageResource(galImages[position]);        container.addVIEw(imageVIEw,0);        return imageVIEw;    }    @OverrIDe    public voID destroyItem(VIEwGroup container,int position,Object object) {        container.removeVIEw((ImageVIEw) object);    }}

这是我想动态添加的视图

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:gravity="center"    androID:padding="10dp" >    <ImageVIEw        androID:ID="@+ID/photo_thumb"        androID:layout_wIDth="wrap_content"        androID:layout_height="fill_parent"        androID:layout_centerHorizontal="true"        androID:layout_centerVertical="true"        androID:background="#000000"        androID:scaleType="fitXY"        androID:padding="0dp" /></relativeLayout>

这是我的VIEwAager存在的MainActivity

MainActivity.xml<linearLayout    androID:ID="@+ID/bannerLayout"    androID:layout_wIDth="fill_parent"    androID:layout_height="0dp"    androID:layout_weight="0.4"    androID:layout_margin="0dip"    androID:orIEntation="vertical">    <androID.support.v4.vIEw.VIEwPager        androID:ID="@+ID/photopager"        androID:layout_wIDth="fill_parent"        androID:layout_height="125dp"        androID:background="#4F4E4F"/></linearLayout>

所以我的问题是我如何改进我正在使用的代码,以便我可以动态地将新图像添加到我的VIEwPager

ps:在参考链接上(我坚信我的问题相关),我完全迷失在这一部分:

// Create an initial vIEw to display; must be a subclass of FrameLayout.FrameLayout v0 = (FrameLayout) inflater.inflate (R.layout.one_of_my_page_layouts,null);pagerAdapter.addVIEw (v0,0);

什么是inflater?我应该将它初始化为什么?

我希望有人可以指导我.如果我在这里问多个问题,我很抱歉.

解决方法 Inflater用于从xml布局中创建VIEw对象.

所以如果你的lauout R.layout.one_of_my_page_layouts:

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:gravity="center"    androID:padding="10dp" >    <ImageVIEw        androID:ID="@+ID/photo_thumb"        androID:layout_wIDth="wrap_content"        androID:layout_height="fill_parent"        androID:layout_centerHorizontal="true"        androID:layout_centerVertical="true"        androID:background="#000000"        androID:scaleType="fitXY"        androID:padding="0dp" /></relativeLayout>

Inflater将做这样的事情(仅举例)

ImageVIEw iv=new ImageVIEw(context);relativeLayout rl=new relativeLayout(context);rl.add(iv)return rl;

只需最小的代码,但inflater也将设置所有布局参数.

因此,如果你有一个xml,你可以简单地对它进行膨胀并获得一个Type视图对象,而不是像在instantiateItem中那样动态创建一个视图.

所以你可以将instantiateItem改为:

public Object instantiateItem(VIEwGroup container,int position) {        relativeLayout v0 = (relativeLayout ) inflater.inflate (R.layout.one_of_my_page_layouts,null);        ImageVIEw imageVIEw = vo.findVIEwByID(R.ID.photo_thumb);        int padding = 10;        imageVIEw.setpadding(padding,padding);        imageVIEw.setScaleType(ImageVIEw.ScaleType.MATRIX);        imageVIEw.setimageResource(galImages[position]);        container.addVIEw(v0,0);        return v0;    }
总结

以上是内存溢出为你收集整理的android – 如何动态添加图像到包含imageview的viewpager?全部内容,希望文章能够帮你解决android – 如何动态添加图像到包含imageview的viewpager?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1127533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存