2012-06-01 17 views
8

Desidero disattivare un pulsante per renderlo disattivato all'utente, ma continuo ad ascoltare i clic in modo da poter visualizzare un messaggio all'utente che spiega perché il pulsante non è applicabile.Posso rendere disattivato un pulsante e continuare ad ascoltare i clic?

Mi piacerebbe assicurarmi che l'API Android sia quella che configura l'aspetto disabilitato standard appropriato invece di impostare manualmente il colore del pulsante in grigio, ecc. Qual è il modo migliore per farlo?

correlati: Android - Listen to a disabled button

risposta

4

È inoltre possibile impostare manualmente lo sfondo del pulsante su quello predefinito disabilitato. Ma lasciare il pulsante abilitato e gestire gli eventi click in modo normale

qualcosa come questo dovrebbe farlo:

mBtn.setBackgroundResource(android.R.drawable.btn_default_normal_disabled); 
+0

Non funziona su mai versioni. – arenaq

0

Io non sono un esperto di Android, quindi ci potrebbero essere modi migliori, ma per quanto riguarda la disattivazione del tasto e sovrapponendo una visione trasparente che cattura gli eventi?

Si potrebbe avere la vista sempre lì sotto il pulsante, quindi è sufficiente modificare uno z-index o crearlo dinamicamente quando necessario.

+0

garph, che è un'idea interessante - Scommetto che avrebbe funzionato. Per prima cosa proverò un paio di altre soluzioni. –

-1

Si potrebbe anche impostare lo stile Button s' a guardare in grigio (per entrambi premuto e stati non compressi), quindi normale setOnClickListener(), ma il metodo onClick() indica che non è selezionabile.

-1

Poiché il pulsante estende la visualizzazione del testo. È possibile utilizzare i metodi in textview come .setTextColor() o .setBackgroundColor().

Ora per il display si hanno 2 opzioni:

  • AlertDialog - visualizza un avviso, ma non lo fa di sé vicino se non specificato.
  • Toast: visualizza un testo in un dato momento e si chiude automaticamente.

fare la vostra scelta.

+0

Juju, grazie, ma non devi aver letto nella domanda che ho fatto * non * voglio cambiare manualmente il colore. –

9

questo è un pulsante personalizzato che espone l'evento di tocco quando disabilitato funziona sicuro e testato. progettata specifico per voi

public class MyObservableButton extends Button 
{ 
public MyObservableButton(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

private IOnClickWhenEnabledListner mListner; 

public void setOnClickWhenEnabledListener(IOnClickWhenEnabledListner listener) { 
    mListner = listener; 
} 

private interface IOnClickWhenEnabledListner { 
    public void onClickWhenEnabled(); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{  
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     if (!isEnabled() && mListner != null) { 
      mListner.onClickWhenEnabled(); 
     } 
    } 

    return super.onTouchEvent(event); 
} 

} 

questo è il modo giusto per realizzare ciò che si vuole dal mio punto di vista degli sviluppatori Android.

non c'è nessun problema extanding vista tutti di Android, e li usa per i file XML, e la fonte invece ..

buona fortuna

+1

È possibile evitare il listener extra e utilizzare semplicemente OnClickListener. Aggiungi performClick() in onTouchEvent() – Patrick

Problemi correlati