2010-07-08 6 views
6

Mam aktywność, w której w środku TableLayout umieszcza się kilka przycisków, w odróżnieniu od klawiatury. Podczas niektórych operacji muszę tymczasowo wyłączyć przyciski. Ku mojej nieprzyjemnej niespodziance wykonanie TableLayout.setEnabled(false) nie ma wpływu na zagnieżdżone przyciski. Czy utknąłem przy ustawianiu każdego pojedynczego przycisku, czy też istnieje sprytny (lepszy) sposób na osiągnięcie tego samego?Android: przyciski włączania/wyłączania masy

Odpowiedz

9

bym spróbować zrobić coś takiego:

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

Nie idealny, ale do przyjęcia w moich okolicznościach (i wystarczająco krótki). Dzięki! – Bostone

+0

(przycisk dotykowy)) .setEnabled (false); –

1

Myślę, że trzeba ustawić każdą z tych przycisków, aby ją dezaktywować. Aby wyglądało ładniej, można umieścić wszystkie przyciski na liście i powtarzać je podczas aktywacji i dezaktywacji. Ale to nie powstrzyma cię od znalezienia ich wszystkich raz w tobie kodu.

+0

Przynajmniej mogę utworzyć niestandardowy przycisk, który nasłuchuje na określonym wydarzeniu i włącza/wyłącza na tej podstawie. Staram się być leniwy zanim pójdę tą drogą :) – Bostone

0

ponieważ przyciski są zagnieżdżone pod TableLayout, to powinno być łatwe do iteracyjne nad dziećmi i ustawić każdą z nich. Nie wiem, czy jest łatwiejszy sposób.