2017-07-07 8 views
0

私はしばらくの間、Javaを学習していて、アンドロイドアプリで作業しています。リニアレイアウトでネストされたイメージボタンのブール論理を実装しようとしていますが、他のボタンはアクティブなボタンを表示するだけです。 今のところ、各ボタンはアクティブと非アクティブを切り替えることができますが、同時に2つ以上のボタンをアクティブにすることは望ましくありません。私は一度に1つのアクティブなボタンを表示したい。1つのボタンをアンドロイドでアクティブにする方法

public void showAudio(View view) { 
     if (!audioButtonClicked) { 
      audioButtonClicked = true; 
      audioWindowButton.setImageResource(R.drawable.audio_active); 
     } else { 
      audioWindowButton.setImageResource(R.drawable.audio_inactive); 
      audioButtonClicked = false; 
     } 

     } 

    public void showEvents(View view) { 
     if(!eventButtonClicked) { 
eventWindowButton.setImageResource(R.drawable.event_active); 
      eventButtonClicked = true; 
     } else { 
      eventWindowButton.setImageResource(R.drawable.event_inactive); 
      eventButtonClicked = false; 
     } 
    } 

    public void showMore(View view) { 
     if(!moreButtonClicked) { 
      moreWindowButton.setImageResource(R.drawable.event_active); 
      moreButtonClicked = true; 

     } else { 
      moreWindowButton.setImageResource(R.drawable.event_inactive); 
      moreButtonClicked = false; 
     } 
    } 

答えて

1

button.setVisibility()を使用して可視性を変更できます。これは疑似コードです。

if() { // some condition when you want imageButton1 to be visibile and others invisible 
    imageButton1.setVisibility(View.VISIBLE);  
    imageButton2.setVisibility(View.INVISIBLE); 
    imageButton3.setVisibility(View.INVISIBLE); 
} else if() { // some other condition when you want imageButton2 to be visibile and others invisible 
    imageButton1.setVisibility(View.INVISIBLE); 
    imageButton2.setVisibility(View.VISIBLE); 
    imageButton3.setVisibility(View.INVISIBLE); 
} else { // when you want imageButton3 to be visibile and others invisible 
    imageButton1.setVisibility(View.INVISIBLE); 
    imageButton2.setVisibility(View.INVISIBLE); 
    imageButton3.setVisibility(View.VISIBLE); 
} 

上記のロジックを使用:機能無効などの他の機能ながら有効とするとき

public void showAudio(View view) { 
     if (!audioButtonClicked) { 
      audioButtonClicked = true; 
      eventButtonClicked = false; 
      moreButtonClicked = false; 
      audioWindowButton.setImageResource(R.drawable.audio_active); 
      eventWindowButton.setImageResource(R.drawable.event_inactive); 
      moreWindowButton.setImageResource(R.drawable.event_inactive); 
     } else { 
      audioWindowButton.setImageResource(R.drawable.audio_inactive); 
      audioButtonClicked = false; 
     } 
} 

public void showEvents(View view) { 
     if(!eventButtonClicked) { 
      audioButtonClicked = false; 
      eventButtonClicked = true; 
      moreButtonClicked = false; 
      audioWindowButton.setImageResource(R.drawable.audio_inactive); 
      eventWindowButton.setImageResource(R.drawable.event_active); 
      moreWindowButton.setImageResource(R.drawable.event_inactive); 
     } else { 
      eventWindowButton.setImageResource(R.drawable.event_inactive); 
      eventButtonClicked = false; 
     } 
} 

public void showMore(View view) { 
     if(!moreButtonClicked) { 
      audioButtonClicked = false; 
      eventButtonClicked = false; 
      moreButtonClicked = true; 
      audioWindowButton.setImageResource(R.drawable.audio_inactive); 
      eventWindowButton.setImageResource(R.drawable.event_inactive); 
      moreWindowButton.setImageResource(R.drawable.event_active); 

     } else { 
      moreWindowButton.setImageResource(R.drawable.event_inactive); 
      moreButtonClicked = false; 
     } 
} 

はこれだけ表示されるでしょう。いずれかの機能が有効になっている場合、他の2つの機能は無効になりますが、無効になっている機能が1つのみであれば、他の機能は変更されません。

+0

私はしたいが、いずれかのボタンを不可視にいけません。私はちょうど各ボタンがアクティブであることを示すトグル機能をしたい –

+0

編集を見てください。 – Ali

+0

ありがとうございます。それは簡単だった –

0

ViewSwitcherを使用できます。アイテムを入れ、それらの間で切り替えます。 1つだけが現れます。以下は元です。 2ビュー。 MainActivity.java

viewSwitcher = (ViewSwitcher)findViewById(R.id.viewSwitcher); 
     text1= (TextView)findViewById(R.id.text1); 
     text2 = (TextView) findViewById(R.id.text2); 
     button1 = (Button) findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       if (viewSwitcher.getCurrentView() != text1){ 
         viewSwitcher.showPrevious(); 
       } else if (viewSwitcher.getCurrentView() != text2){ 
        viewSwitcher.showNext(); 
       } 
      } 
     }); 
0

でlayout_main.xml

<ViewSwitcher 
     android:id="@+id/viewSwitcher" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/text1" 
      android:text="previous" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
     </TextView> 

     <TextView 
      android:id="@+id/text2" 
      android:text="next" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
     </TextView> 

</ViewSwitcher> 

は、これであなたのコードを置き換えます

public void showAudio(View view) { 

    audioWindowButton.setImageResource(R.drawable.audio_active); 
    eventWindowButton.setImageResource(R.drawable.event_inactive); 
    moreWindowButton.setImageResource(R.drawable.event_inactive); 

} 

public void showEvents(View view) { 

    audioWindowButton.setImageResource(R.drawable.audio_inactive); 
    eventWindowButton.setImageResource(R.drawable.event_active); 
    moreWindowButton.setImageResource(R.drawable.event_inactive); 

} 

public void showMore(View view) { 


    audioWindowButton.setImageResource(R.drawable.audio_inactive); 
    eventWindowButton.setImageResource(R.drawable.event_inactive); 
    moreWindowButton.setImageResource(R.drawable.event_active); 

} 
関連する問題