2012-02-16 149 views
11

我知道這是一個問題,以前已經問了很多次,但我似乎無法解決它在我的代碼。我有兩個按鈕,當按下一個按鈕時,我想將它保持在選定狀態,反之亦然。我曾嘗試使用它,但setSelected和setPressed,但我似乎無法得到它的工作。這裏是我使用的代碼:保持安卓按鈕選擇狀態

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); 

     } 
    }); 

編輯: 基礎上的評論,我需要補充的是我對按鍵的自定義XML的背景,並希望保留目前的樣子。

+1

爲什麼你不使用RadioGroup和RadioButton,然後設置正確的屬性到你的RadioButtons,使用選擇器它應該做的伎倆! – Cehm 2012-02-16 20:14:33

回答

16

好了,所以我用了互聯網的谷歌搜索功能:對,我發現如下因素:This threa don StackOverflow...

mycodes_Button.setOnTouchListener(new OnTouchListener() { 

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

但閱讀評論,這是很有趣!

+0

幾乎是正確的 - 只是爲了其他的參考,另一個按鈕的狀態也需要設置爲false,但是我會接受,因爲它讓我走上了正確的軌道。謝謝! – coder 2012-02-16 20:36:14

+4

使用setSelected(http://stackoverflow.com/a/3417158/667834)對我更好,所以我仍然可以在發佈功能 – richy 2012-10-18 05:28:22

3

你爲什麼使用按鈕? CheckBoxRadioGroup對於這些情況

checkBox.setChecked(false); 
+1

如果您不喜歡複選框的UI,則不需要。 – 2012-02-16 20:27:00

+2

你可以改變它到任何你想要的 – 2012-02-16 20:28:03

+0

根據需要,是的,你可以。 – 2012-02-16 20:29:34

1

這裏最好的解決方案有一個想法,禁用按下的按鈕和啓用等。禁用的按鈕佈局與按下的佈局類似。用戶將看到它按下,但它實際上被禁用。

0

一個複選框可以工作,但如果你是一個UI後在iOS上,這是可能的包裹在LinearLayout所需的所有按鈕接近UISegmentedControl,那麼你可以做線沿線的東西:

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 
    } 
} 

當然,在您的可繪製文件夾中,您可以爲每個狀態添加背景顏色,邊框和其他可視化內容。

+0

我在尋找類似於iOS上的NSSegmentedControl的外觀,但是您的解決方案的問題是,一旦沒有啓用按鈕,再次單擊它就什麼都不會做。 – coder 2012-02-16 20:30:30

+0

@coder這就是UIsegmentedControl背後的想法(我早期的錯誤)。要重新啓用禁用的按鈕,需要按下另一個按鈕。它的功能與廣播組完全一樣。 – 2012-02-16 20:39:47