在ImageView中交换图像

6
我一直在尝试在我的应用程序中实现简单的(我认为)功能。我认为这会很简单,但不知怎么的它不能像我想要的那样工作。
我要做的是:
- 有一个活动,在其中心有一个ImageView - 它有自己的图像(好吧,有两个)。 - 我想按下该ImageView(或它可以是ImageButton),打开画廊/使用相机拍照。 - 然后,在拍摄/选择一张图片之后,我想使该ImageView显示缩略图。 我的布局
                <ImageView
                    android:id="@+id/add_photo_left"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="20dp"
                    android:layout_weight="1"
                    android:adjustViewBounds="true"
                    android:src="@drawable/add_photo_button" />

                <ImageView
                    android:id="@+id/add_photo_right"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:adjustViewBounds="true"
                    android:src="@drawable/add_photo_button" />
            </LinearLayout>

我的代码 - 获取图片路径后

        BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
        bmpFactoryOptions.inSampleSize = 8;
        Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/5.png",bmpFactoryOptions);
        lastClicked.setImageBitmap(bitmap);
        //lastClicked.setImageResource(R.drawable.green_circle);

我想做的是从SD卡中读取已调整大小的文件(使用inSampleSize),然后用它填充ImageView(或ImageButton)。但是在使用setImageBitmap函数之后,视图会消失 - 就像加载了空图像一样(注释掉的行正常工作 - 它只是一个绿点)。
也许有人遇到了类似的问题?我非常感谢任何形式的帮助。
问候, scana
编辑: 当然是lastClicked:
lastClicked = (ImageView)findViewById(R.id.add_photo_left);
1个回答

5
为什么不尝试使用lastClicked.invalidate()?我至少在我的代码中这样做,并且它可以正常工作;)

2
哇!这是我在stackoverflow.com上的第一个被接受的答案:D 理解何时需要invalidate()会很有趣,但昨天我没有找到一个好的答案。 - mjaskowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接