2017-07-03 1 views
0

J'ai un bouton pour sélectionner une photo ou prendre une photo depuis l'appareil photo, ce que je veux, c'est quand l'image que j'utilise pour fixer l'image a une image dessus ., affichez un message immédiatement, sans cliquer sur un bouton.afficher le message lorsque l'image ne s'empire pas sans cliquer sur un bouton

Ce que je fais est maintenant lorsque vous appuyez sur un bouton puis il montre une edittext caché qui dit « image téléversés » ou quelque chose. Je veux réaliser ceci mais sans cliquer sur aucun bouton. J'ai essayé plusieurs autres options mais toutes utilisent un bouton.

Des échantillons ou des idées! Merci à l'avance

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

méthode VALIDE DE SAVOIR SI, IL Y A UNE IMAGE ATTACHÉ:

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

    } 
} 

CODE IMAGE:

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

S'il vous plaît montrer votre code actuel et expliquer/montrer le code de ce que vous avez essayé exactement. –

+0

@KrzysztofBracha c'est un bouton quand on clique dessus il appelle validacionImagen(), pour montrer du TextView, mais je veux le montrer sans cliquer sur un bouton, quand l'imageview a une image montrer ces TextView immédiatement –

+0

Mais quand imageview peut avoir une image ? Quand charger l'activité? –

Répondre

0

Si vous appelez startActivityForResult afin d'obtenir l'image de la caméra ou la galerie comme:

startActivityForResult(pictureIntent, SELECT_PICTURE); 

Ensuite, vous pouvez remplacer onActivityResult pour vérifier les résultats de cette intention.

@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 
      } 
    } 
} 

Maintenant, si ce n'est pas l'approche que vous êtes à la recherche et tout ce que vous voulez faire est de vérifier si un ImageView a changé, vous pouvez mettre en œuvre un ImageView personnalisé avec un écouteur. Référez-vous à this

+0

Hey l'homme merci je l'obtiens enfin! –

0

Vous pouvez essayer de faire quelque chose comme ceci:

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

} 

Créez ImageView personnalisé avec un écouteur pour notifier lorsque vous définissez l'image et remplacez une méthode que vous utilisez pour définir l'image dans ImageView pour appeler l'écouteur.

+0

Alors maintenant, en utilisant cette classe, comment puis-je mettre en œuvre sur mon activité ou que dois-je remplacer RL –

+0

@ Daniel Montrez-moi votre activité –

+0

J'ai ajouté le code dans ma question ci-dessus –