当 imageview 不为空而不单击按钮时显示消息

show message when imageview is not empy without clicking a button

我有一个按钮可以select拍照或从相机拍照,我想要的是当我用来附加照片的图像视图上有图像时., 立即显示消息,无需单击按钮

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

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

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();
        }
    }
}

你可以试着做这样的东西:

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 中设置图像的某些方法以调用侦听器。

如果您调用 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