首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >底部为TextView的TouchImageView

底部为TextView的TouchImageView
EN

Stack Overflow用户
提问于 2015-04-08 13:57:26
回答 1查看 244关注 0票数 1

我成功地在Viewpager中创建了TouchImageView,之后我尝试在页面适配器中使用单行在底部使用TextView制作一个自定义的TuochImageView,但无法膨胀...为此,我使用以下代码在视图pager>>>中的android中创建TouchImageView

代码语言:javascript
复制
private class ImagePagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return image_name_array.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((TouchImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = getActivity().getApplicationContext();

        // define Image View
        TouchImageView imageView = new TouchImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
        int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
        imageView.setPadding(padding, padding, padding, padding);

        try {
            // draw image using bitmap
            Bitmap image_drawable = BitmapFactory.decodeStream(getActivity().getAssets().open(image_name_array.get(position)));
            imageView.setImageDrawable(new BitmapDrawable(getActivity().getResources(), image_drawable));

        } catch (Exception e) {
            e.printStackTrace();
        }

        // imageView.setImageResource(mImages[position]);
        ((ViewPager) container).addView(imageView, 0);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
    }
}    

我已经将instantiateItem方法中的以下内容更改为:

代码语言:javascript
复制
 public Object instantiateItem(ViewGroup container, int position) {

    TouchImageView imageDisplay;
    TextView description;
    inflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.details_images_caption, container, false);
    imageDisplay = (TouchImageView) view.findViewById(R.id.gallery_image);
    description = (TextView) view.findViewById(R.id.gallery_description);
    //Log.e("image aptadapter =>", image_caption.get(position).toString());

    description.setText(image_caption.get(position));

    String picture = image_name_array.get(position);


    Log.e("image DataADA =>", picture);

    if (!TextUtils.isEmpty(picture)) {
        try {
            Bitmap image_drawable = BitmapFactory.decodeStream(context.getAssets().open(picture));
            imageDisplay.setImageDrawable(new BitmapDrawable(context.getResources(), image_drawable));

        } catch (Exception e) {
        }
    }


    return view;
}
EN

回答 1

Stack Overflow用户

发布于 2015-05-19 22:51:19

您忘记将视图添加到容器中。在return语句之前的instantiateItem末尾添加此((ViewPager) container).addView(view);

以下是我的示例代码:

代码语言:javascript
复制
    @Override
    public View instantiateItem(ViewGroup container, int position) {
        LayoutInflater inflater = (LayoutInflater) LoginActivity.getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.fragment_screen_slide_page, container, false);
        TouchImageView imageView = (TouchImageView) view.findViewById(R.id.imageView);
        imageView.setImageResource(images1[position]);
        TextView textView = (TextView) view.findViewById(R.id.screenSlideDescription);
        textView.setText("" + position);
        ((ViewPager) container).addView(view);
        return view;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29507022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档