2010-07-08 8 views
6

Ich habe eine Aktivität, wo eine Reihe von Schaltflächen in TableLayout, im Gegensatz zu einer Wähltastatur platziert sind. Während einiger Operationen muss ich die Tasten vorübergehend deaktivieren. Zu meiner unangenehmen Überraschung macht TableLayout.setEnabled(false) keinen Effekt auf die verschachtelten Buttons. Bin ich dabei, jeden einzelnen Button zu setzen oder gibt es einen (besseren) Weg, das gleiche zu erreichen?Android: Massen aktivieren/deaktivieren Schaltflächen

Antwort

9

Ich würde versuchen, so etwas zu tun:

TableLayout tableLayoutInstance; // let's suppouse you have already initialized it 
// blablabla 
// example to deactivate all buttons 
ArrayList<View> touchables = tableLayoutInstance.getTouchables(); 
for(View touchable : touchables){ 
    if(touchable instanceof Button) 
     ((Button)touchable).setEnabled(false); 
} 
+0

Nicht ideal, aber unter meinen Umständen akzeptabel (und kurz genug). Vielen Dank! – Bostone

+0

((Schaltfläche) berührbar) .setEnabled (false); –

1

Ich denke, Sie müssen jede einzelne dieser Schaltflächen deaktiviert festlegen. Um es ein wenig schöner aussehen zu lassen, können Sie alle Schaltflächen in eine Liste einfügen und beim Aktivieren und Deaktivieren über diese Schaltflächen hinweg iterieren. Aber das hindert Sie nicht daran, sie alle einmal in Ihrem Code zu finden.

+0

Zumindest kann ich eine benutzerdefinierte Schaltfläche erstellen, die auf bestimmte Ereignisse abhört und basierend darauf aktiviert/deaktiviert. Ich versuche nur, faul zu sein, bevor ich diesen Weg gehe :) – Bostone

0

Da die Tasten unter einem Tablelayout verschachtelt sind, sollte es leicht sein, über die Kinder zu durchlaufen und jeweils eins gesetzt. Ich weiß nicht, ob es einen leichteren Weg gibt.

Verwandte Themen