2012-02-16 14 views
11

Wiem, że to pytanie zostało zadane wiele razy wcześniej, ale nie mogę go rozwiązać w moim kodzie. Mam dwa przyciski, a kiedy jeden jest wciśnięty, chciałbym zachować go w wybranym stanie i na odwrót. Próbowałem to zrobić przy użyciu setSelected i setPressed, ale nie mogę go uruchomić. Oto kod używam:Zachowaj wybrany przycisk na Androidzie

region_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      objects = category; 
      adap.notifyDataSetChanged(); 
      proximity_button.setPressed(false); 
      region_button.setPressed(true); 

     } 
    }); 

    proximity_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      objects = proximity; 
      adap.notifyDataSetChanged(); 
      region_button.setPressed(false); 
      proximity_button.setPressed(true); 

     } 
    }); 

Edit: Na podstawie uwag, muszę dodać, że mam zwyczaj tło xml dla przycisków i chcieliby zachować aktualny wygląd.

+1

Dlaczego po prostu nie użyjesz RadioGroup i RadioButton, a następnie ustaw odpowiednie atrybuty do swoich przycisków RadioButtons, używając selektora, który powinien wystarczyć! – Cehm

Odpowiedz

16

Ok, więc użyłem funkcji wyszukiwania Google w internecie: p i uważam, że folowing: This threa don StackOverflow...

mycodes_Button.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       mycodes_Button.setPressed(true); 
       return true; 
      } 
     }); 

Ale przeczytać komentarz, to całkiem interesujące!

+0

Prawie prawo - tylko dla odniesienia innych osób, drugi stan przycisku również musi być ustawiony na false, ale akceptuję tak czy inaczej, ponieważ dostałem mnie na właściwą drogę. Dzięki! – coder

+4

przy użyciu funkcji setSelected (http://stackoverflow.com/a/3417158/667834) działało lepiej dla mnie, więc nadal mogłem mieć funkcjonalność przy wydaniu – richy

3

Dlaczego używasz przycisków? CheckBox lub RadioGroup jest najlepszym rozwiązaniem dla tych przypadku

checkBox.setChecked(false); 
+1

Nie, jeśli nie podoba Ci się interfejs użytkownika pól wyboru. –

+2

Możesz zmienić to, co chcesz –

+0

W zależności od potrzeb, tak, możesz. –

1

Oto myśl, wyłącz przycisk wciśnięty i umożliwić innym. Czy wyłączony układ przycisków jest podobny do wciśniętego układu. Użytkownik zobaczy to jako naciśnięty, ale w rzeczywistości jest wyłączony.

0

Pole wyboru może pracować, ale jeśli jesteś po interfejsie bliżej UISegmentedControl na iOS, co jest możliwe zawijania wszystkie przyciski potrzebne w LinearLayout, a następnie można zrobić coś wzdłuż linii:

public void onClick(View v){ 
    if (v.getID == R.id.btn1) { 
     btn1.setEnabled(false); 
     btn2.setEnabled(true); 
     // do stuff 
    } 
    else if (v.getId() == R.id.btn2) { 
     btn2.setEnabled(false); 
     btn1.setEnabled(true); 
     // do stuff 
    } 
} 

Oczywiście w folderze do rysowania można dodać kolor tła, ramki i inne elementy wizualne dla każdego stanu.

+0

Szukam wyglądu podobnego do NSSegmentedControl na iOS, ale problem z rozwiązaniem polega na tym, że gdy przycisk nie jest włączony, ponowne kliknięcie go nie spowoduje niczego. – coder

+0

@ koder To jest idea za UIsegmentedControl (moje złe wcześniej za literówkę). Aby ponownie włączyć wyłączony przycisk, należy nacisnąć inny. Działa dokładnie tak, jak grupa radiowa. –

Powiązane problemy