【问题标题】:show message when imageview is not empy without clicking a button当 imageview 不为空时显示消息而不单击按钮
【发布时间】:2019-11-22 03:08:21
【问题描述】:

我有一个按钮可以选择图片或从相机拍照,我想要的是当我用来附加图片的图像视图上面有图像。,显示一条消息离开,无需点击按钮

我现在要做的是,当您按下一个按钮时,它会显示一些隐藏的编辑文本,上面写着“图像已上传”或其他内容。我想实现这一点,但不点击任何按钮。 我已经尝试了许多其他选项,但它们都使用按钮。

任何样品或想法! 提前致谢

bb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            validacionImagen();
  }
});

验证是否有附加图像的方法:

     public void validacionImagen(){
    if(imageView.getDrawable()==null){
        buttonChoose.setError("Sube una fotografía");
        buttonChoose.setFocusable(true);
        buttonChoose.setFocusableInTouchMode(true);
        buttonChoose.requestFocus();
    }else{
        imagencargada.setVisibility(View.VISIBLE);
        textoimagencargada.setVisibility(View.VISIBLE);
        buttonChoose.setError(null);

    }
}

图片代码:

private void showFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Elige una imagen"), PICK_IMAGE_REQUEST);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == CAM_REQUEST){
        Bitmap bitmap = (Bitmap) data.getExtras().get("data");
        filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);

        } catch (IOException e) {
            e.printStackTrace();
        }
        //imageView.setImageBitmap(bitmap);
    }else if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK && data != null && data.getData() != null) {
        filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);

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

【问题讨论】:

  • 请显示您当前的代码并解释/显示您尝试过的代码。
  • @KrzysztofBracha 它是一个按钮,当点击它调用validacionImagen() 来显示一些TextView,但我想在不点击按钮的情况下显示它,当imageview 有图像时立即显示那些TextView
  • 但是imageview什么时候可以有图片呢?何时加载活动?
  • 拍摄照片或从图库中选择照片后。 @DanielRL
  • 也显示此代码

标签: android imageview android-camera


【解决方案1】:

如果您调用 startActivityForResult 是为了从相机或图库中获取图片,例如:

startActivityForResult(pictureIntent, SELECT_PICTURE);

然后,您可以覆盖 onActivityResult 以检查该意图的结果。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case SELECT_PICTURE:
            if(resultCode == RESULT_OK && data != null) {
                //Manage the picture taken here with data
            } else {
                //The intent was cancelled or didn't bring any data
            }
    }
}

现在,如果这不是您正在寻找的方法,而您想要做的只是检查 ImageView 何时发生更改,您可以使用侦听器实现自定义 ImageView。参考this

【讨论】:

    【解决方案2】:

    你可以尝试做这样的事情:

    public class ImageView extends ImageView {
    
        private OnImageChangeListener onImageChangeListener;
    
        public ImageView(Context context) {
            super(context);
        }
    
        public ImageView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public ImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public void setImageChangeListiner(
                OnImageChangeListener onImageChangeListener) {
            this.onImageChangeListener = onImageChangeListener;
        }
    
        @Override
        public void setBackgroundResource(int resid) {
            super.setBackgroundResource(resid);
            if (onImageChangeListener != null)
                onImageChangeListener.onImageChanged(this);
        }
    
    
        @Override
        public void setBackgroundDrawable(Drawable background) {
            super.setBackgroundDrawable(background);
            if (onImageChangeListener != null)
                onImageChangeListener.onImageChanged(this);
        }
    
    
        public interface OnImageChangeListener {
            void onImageChanged(ImageView imageView);
        }
    
    }
    

    使用侦听器创建自定义 ImageView 以在您设置图像时通知并覆盖用于在 ImageView 中设置图像的某些方法以调用侦听器。

    【讨论】:

    • 所以现在使用这个类,我如何在我的活动中实现它或者我应该用什么替换@Daniel RL
    • 显示你的活动
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多