2013-01-14 3 views
8

Ho una linearlayout e ho anche alcuni pulsanti al suo interno. Voglio renderlo visibile quando tocco e invisibile quando lo tocco di nuovo.Nascondere e mostrare linearlayout

Come posso farlo ??

+2

Puoi farlo usando .setVisibility. Ma come farà l'utente a sapere che il pulsante è lì mentre sarebbe invisibile? –

risposta

0

Si dovrebbe utente

Invisibile -: mButton.setVisibility(View.INVISIBLE);

Vsible -: mButton.setVisibility(View.VISIBLE);

inserire questo codice in onclick listner del pulsante con il controllo se la condizione.

2

aggiungere setOnTouchListener per LinearLayout ottenere eventi Touch come:

linearLayout.setOnTouchListener(new OnTouchListener(){ 
    public boolean onTouch(View v, MotionEvent event){ 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 

     // show-hide view here 

     return true; 
     } 

    if (event.getAction() == MotionEvent.ACTION_UP) { 

     // show-hide view here 

     return true; 
     } 

    return false; 
    } 
}); 

per rendere Vista utilizzo visibile yourview.setVisibility(View.VISIBLE) e per uso invisibile yourview.setVisibility(View.INVISIBLE)

+0

Non capisco su yourview.setVisibility (View.VISIBLE) e yourview.setVisibility (View.INVISIBLE). Puoi spiegare –

+0

@KokoKrunch: yourview indica la tua vista (come linarlayout, pulsanti, viste testuali, ...) che vuoi mostra/nascondi per esempio 'linarlayout.setVisibility (View.INVISIBLE);' o linarlayout.setVisibility (View.VISIBLE); ' –

+0

ho bisogno di mettere ogni pulsante che si trova in linearlayout o ho solo bisogno di mettere solo linearlayout a 'show -hide view ' –

3

Aggiungere un valore booleano sul vostro codice

boolean flag = false; 

quindi aggiungere android: clickable = true sul layout lineare su xml

quindi utilizzare questo codice per poterlo

your_linear_layout = new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     if (flag){ 
     // means true 
     your_linear_layout.setVisibility(View.INVISIBLE); 
     flag = false; 
     } 
     else{ 
     your_linear_layout.setVisibility(View.VISIBLE) 
     flag = true; 
     } 

    } 

}; 

Havent provato questo ancora, ma questo dovrebbe funzionare ..

Acclamazioni

+0

Usa view.isShown() o getVisibility() e non avresti bisogno di quello booleano. – RobGThai

+0

@RobGThai grazie per il suggerimento. In realtà è sulla sua stessa implementazione .. – Androyds

20
LinearLayout one = (LinearLayout) findViewById(R.id.one); 
one.setVisibility(View.GONE); 

vi suggerisco di utilizzare ANDATO insteady del INVISIBILE nella onclick evento perché con View.GONE il posto per il layout non sarà visibile e l'applicazione non sembrerà avere spazio inutilizzato in esso come lo View.INVISIBLE che lascerà il gap che è inteso per il layout

+0

Grazie! Ha funzionato come un fascino. Quindi ho usato 'View.VISIBLE' per far ricomparire il mio. – Joe