2016-04-03 14 views
0

Ich habe ein Raster mit vielen Tasten drin, ist es möglich, das Raster zu deaktivieren, die dazu führen würde, dass alle Tasten deaktiviert werden ?.Android Disable Grid von Tasten

Der Grund, warum nach dem Gebrauch eine Taste klickt, um die Frage zu beantworten, wird die Antwort überprüft und Noten usw. berechnet, aber wenn ich einen Knopf gedrückt halte, während dies geschieht, beantwortet er die nächste Frage und so weiter, auch wenn Ich benutze einen Handler, um zu warten. Die Deaktivierung ist nur vorübergehend, sie wird wieder aktiviert, nachdem alles berechnet wurde.

Wie höre ich damit auf? ohne jede einzelne Taste manuell deaktivieren zu müssen.

Vielen Dank im Voraus.

Edit:

   GridLayout numgrid = (GridLayout) findViewById(R.id.numbersGrid); 
      GridLayout lettergrid = (GridLayout) findViewById(R.id.lettersGrid); 
      numgrid.setEnabled(false); 
      lettergrid.setEnabled(false); 

habe ich versucht, die oben genannten Code nicht funktioniert, wie ich es zu brauchen.

Antwort

1

Scheinbar scheint es kein "einfacher" Weg zu sein, dies zu lösen. Sie können alle Schaltflächen in Ihrem Layout als Array verwenden und dann durch sie hindurchschleifen. So etwas wie die folgende Methode, die alle Tasten in einer Grid deaktiviert:

private void disableButtons(GridLayout layout) { 

    // Get all touchable views 
    ArrayList<View> layoutButtons = layout.getTouchables(); 

    // loop through them, if they are an instance of Button, disable it. 
    for(View v : layoutButtons){ 
     if(v instanceof Button) { 
      ((Button)v).setEnabled(false); 
     } 
    } 
} 

Dann einfach in Ihrem Rasterlayouts passieren:

GridLayout numGrid = (GridLayout) findViewById(R.id.numbersGrid); 
GridLayout letterGrid = (GridLayout) findViewById(R.id.lettersGrid); 

disableButtons(numGrid); 
disableButtons(letterGrid);