2012-06-01 10 views
8

Me gustaría poner gris un botón para que parezca deshabilitado para el usuario, pero sigo escuchando los clics para que pueda mostrar un mensaje al usuario que explique por qué el botón no es aplicable.¿Puedo hacer que un botón parezca deshabilitado y sigo escuchando los clics?

Me gustaría asegurarme de que la API de Android sea la única que configure la apariencia deshabilitada estándar adecuada en lugar de establecer manualmente el color del botón en gris, etc. ¿Cuál es la mejor manera de hacerlo?

relacionadas: Android - Listen to a disabled button

Respuesta

4

También puede establecer manualmente el fondo de su Botón en el predeterminado para deshabilitado. Pero deje el botón habilitado y manejar los eventos de clic de la forma normal

algo como esto debería hacerlo:

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

No funciona en versiones nunca. – arenaq

0

No soy un experto en Android, por lo que no podía haber mejores maneras, pero lo que acerca de cómo deshabilitar el botón y la superposición de una visión transparente que captura los eventos?

Puede tener la vista siempre allí debajo del botón, por lo que solo necesita cambiar un índice z, o crearlo dinámicamente cuando sea necesario.

+0

garph, que es una idea interesante - Apuesto a que iba a funcionar. Sin embargo, primero voy a probar algunas de las otras soluciones. –

-1

También puede establecer el estilo Button 's que mirar en gris (por tanto presiona y se estados no comprimidos), luego setOnClickListener() como es normal, pero el método onClick() indica que no se puede hacer clic en él.

-1

Desde el botón se extiende la vista de texto. Puede usar los métodos en textview como .setTextColor() o .setBackgroundColor().

Ahora, para el la pantalla tiene 2 opciones:

  • AlertDialog - muestra una alerta, pero no lo hace auto cerca menos que se especifique.
  • Toast: muestra un texto durante un tiempo determinado y se cierra.

haga su elección.

+0

Juju, gracias, pero no debe haber leído en la pregunta que sí * no * desea cambiar manualmente el color. –

9

este es un botón personalizado que expone el evento de contacto cuando está deshabilitado funciona con seguridad y probado. diseñado específicamente para usted

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

} 

esta es la forma correcta de lograr lo que desea desde mi punto de vista como desarrollador de Android.

no hay ningún problema extanding vistas de todos los androides, y los utilizan en los archivos XML, y la fuente en su lugar ..

buena suerte

+1

Puede evitar el oyente adicional y simplemente usar OnClickListener. Agregar performClick() en onTouchEvent() – Patrick

Cuestiones relacionadas