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
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);
}
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.
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
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.
Nicht ideal, aber unter meinen Umständen akzeptabel (und kurz genug). Vielen Dank! – Bostone
((Schaltfläche) berührbar) .setEnabled (false); –