2012-02-16 24 views
11

これは以前何度も聞かれた質問ですが、私のコードでは解決できないようです。私は2つのボタンを持っています。そして、1つが押されると、それをその選択された状態に保ちたいと思います。私は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

! – Cehm

答えて

16

[OK]をので、私はインターネットの、Googleの検索機能を使用:This threa don StackOverflow...

mycodes_Button.setOnTouchListener(new OnTouchListener() { 

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

しかし、コメントを読んで、それはかなり面白い:pとiはfolowing発見しました!あなただけのそれはトリックを行う必要がありますセレクタを使用して、あなたのラジオボタンに右の属性を設定RADIOGROUPとのRadioButtonを使用していないのはなぜ

+0

他のボタンのほぼ全部を参照するだけで、他のボタンの状態もfalseに設定する必要があります。ありがとう! – coder

+4

を使用してsetSelected(http://stackoverflow.com/a/3417158/667834)が機能していたので、まだリリース時に機能を持つことができました – richy

3

なぜあなたはボタンを使用していますか? CheckBoxまたはRadioGroupこれらの場合

checkBox.setChecked(false); 
+1

チェックボックスのUIが嫌いではありません。 –

+2

あなたはそれをあなたが望むものに変更することができます –

+0

必要に応じて、可能です。 –

1

のための最善の解決策は、ここで押されたボタンを無効にし、他の人を有効にする、考えますされています。無効なボタンのレイアウトは、押したレイアウトに似ています。ユーザーは押されたと見なしますが、実際には無効になっています。

0

チェックボックスは仕事ができる、しかし、あなたがLinearLayoutに必要なすべてのボタンをラップすることも可能であるiOSの、上UISegmentedControl近いUI後にしている場合は、の線に沿って何か行うことができます:

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

+0

@coderそれはUIsegmentedControlの背後にあるアイデアです(以前は誤植でした)。無効にしたボタンを再び有効にするには、別のボタンを押す必要があります。これは、ラジオグループとまったく同じように機能します。 –

関連する問題