2017-07-07 30 views
0

我一直在學習java一段時間,並正在開發一個android應用程序。我試圖爲嵌套在線性佈局中的圖像按鈕實現一個布爾邏輯,其中只有一個按鈕應顯示活動按鈕,而其他按鈕不顯示。 現在,每個按鈕都可以在活動狀態和非活動狀態之間切換,但我不希望兩個或多個按鈕同時顯示活動狀態。我希望一次只顯示一個活動按鈕。如何使一個按鈕在Android中出現活動

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

時,而其他功能如禁用功能啓用,因爲這隻能證明。如果啓用了任何一個功能,則其他兩個功能將被禁用,但如果只有一個功能被禁用,則其他功能不會更改。

+0

我不想作出任何按鈕不可見。我只想要一個切換功能來指示每個按鈕何時激活 –

+0

請參閱編輯。 – Ali

+0

謝謝。那很簡單 –

0

您可以使用ViewSwitcher。將物品放入其中並在它們之間切換。只有一個會出現。下面是一個前例。與2視圖。

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

在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

這種替換代碼:

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

} 
相關問題