2017-09-08 2 views
0

J'ai ce bouton qui charge une image à partir d'une URL. J'ai essayé de régler la visibilité d'ImageView sur Invisible, donc quand je démarre l'application, l'image n'apparaît pas jusqu'à ce que je clique sur le bouton. Mais je veux savoir, y a-t-il un autre moyen? Toute autre façon de le faire fonctionner sans définir la visibilité ImageView à invisible.Chargement d'une image avec un bouton cliquez sur

Voici mon code:

public class MainActivity extends Activity { 

    String url = "http://test.please.do/app/car.jpg"; 
    ImageView imageView; 
    Button buttonPlay; 
    Button buttonFullScreen; 
    Button buttonLoad; 
    static final int REQUEST_VIDEO_CAPTURE = 1; 
    VideoView resultvideo; 
    MediaController mediacontroller; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.activity_main); 

     resultvideo = (VideoView)findViewById(R.id.videoView); 
     mediacontroller = new MediaController(MainActivity.this); 

     mediacontroller.setAnchorView(resultvideo); 

     resultvideo.setMediaController(mediacontroller); 

     Button click = (Button)findViewById(R.id.buttonRecord); 
     resultvideo = (VideoView)findViewById(R.id.videoView); 

     final ImageView url = (ImageView) findViewById(R.id.imageView); 
     Picasso.with(this).load("http://test.please.do/app/car.jpg").into(url); 

     buttonLoad = (Button) findViewById(R.id.buttonLoad); 
     { 
      buttonLoad.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        url.setVisibility(View.VISIBLE); 
       } 
      }); 
     } 
    } 
+1

quel est votre objectif? Pourquoi devriez-vous avoir besoin d'une autre façon de le faire? –

+0

Je souhaite d'abord afficher la zone ImageView sans l'image jusqu'à ce que je clique sur le bouton. –

+0

Votre problème est peut-être que l'image prend de la place même lorsqu'elle est invisible? Si c'est le cas, vous devriez utiliser 'GONE' au lieu de' INVISIBLE'. Il n'est pas clair ton objectif –

Répondre

0

Si vous utilisez View.INVISIBLE, la vue prend encore l'espace même s'il est affiché comme transparent. Si vous souhaitez masquer totalement ImageView, vous devez utiliser View.GONE. La différence est simplement que View.GONE réduit la vue pour que l'espace ne reste pas vide pour elle.

A partir des deux liens ci-dessus:

View.INVISIBLE

Ce point de vue est invisible, mais il faut encore l'espace à des fins de mise en page.

View.GONE

Ce point de vue est invisible, et il ne prend pas de place à des fins de mise en page. Se les deux liens pour plus d'informations

Modifier

Une autre façon possible pourrait être l'ajout par le code du imageView après le cliquage .. Ou une autre façon pourrait être réglage de la hauteur de la imageView à 0dp puis retour à WRAP_CONTENT. Ce sont possibilités, vous pouvez le faire. Mais je très déconseillons fortement l'utilisation View.GONE et View.VISIBLE pour la manipulation des étoffes comme celui-ci, car il est le « Standard » pour les comportements Voir

+0

Je sais mais ce que je veux arriver est de montrer le ImageView et l'image après le bouton est cliqué. –

+0

@JoeF Je sais et c'est ce que ça fait .. Je veux dire changer de XML pour changer le mot-clé "INVISIBLE" en "GONE". BTW j'ai ajouté quelques exemples de choses que vous pouvez faire, mais en utilisant View.GONE et View.VISIBLE est le meilleur –

0

changement

final ImageView url = (ImageView) findViewById(R.id.imageView); 
    Picasso.with(this).load("http://test.please.do/app/car.jpg").into(url); 

    buttonLoad = (Button) findViewById(R.id.buttonLoad); 
    { 
     buttonLoad.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       url.setVisibility(View.VISIBLE); 
      } 
     }); 
    } 

à

final ImageView url = (ImageView) findViewById(R.id.imageView); 

    buttonLoad = (Button) findViewById(R.id.buttonLoad); 
     buttonLoad.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) {    
Picasso.with(this).load("http://test.please.do/app/car.jpg").into(url); 
      } 
     }); 

et essayez de supprimer le code pour le rendre invisible

+0

J'ai des erreurs avec 'ceci' –

+0

changez-le en MainActivity.this –

+0

Il charge juste l'image au démarrage, je n'ai pas encore cliqué sur le bouton. –

0

Vous devez ajouter le bouton d'image après l'ancienne mise en page. comme ceci:

<RelativeLayout ...> 
    <variable..../> 
    <ImageButton..../> 
</RelativeLayout>