当 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
我有一个按钮可以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