2013-10-29 179 views
0

一個我似乎無法找到和回答的一般問題。用另一個視圖替換視圖

說我在我的活動中有一個線性佈局的開始按鈕。當用戶按下開始時,我希望它被替換爲一個不同的按鈕(不僅僅是改變標籤),說停止。在一個網站上,我只需隱藏一個按鈕並顯示另一個按鈕(或淡出一個,在零不透明度下隱藏並顯示另一個按鈕並淡入)。

這通常在Android中完成?我閱讀了很多不同的建議,比如Fragments(對於一個按鈕?),或者相關的佈局或者其他任何東西,但我只是想用另一個相同大小的視圖來替換一個視圖,並且稍後也可以對它進行動畫處理。

+0

您可以在按下時更改按鈕的文字,也可以通過VISIBILITY完成。 –

+0

您可以簡單地通過btn.setText(「stop」)設置按鈕的文本; – jyomin

+0

謝謝,但我說它應該是一個不同的按鈕(不只是更改標籤)。 – PFort

回答

1

要隱藏一個視圖,只需調用setVisibility(View.GONE),它將使視圖看起來好像從未在您的佈局中一樣。顯示視圖調用setVisiblity(View.VISIBLE)。

1

你可以做的一件事是覆蓋按鈕,例如使用Relativelayout,並確保按鈕完美對齊(例如,通過設置android:layout_alignLeft,頂部,底部和右側)。然後,將其中一個的可見性設置爲VISIBLE,將其他人的可見性設置爲INVISIBLE(視圖不可見,但它仍佔用空間用於佈局)或GONE(視圖不可見,並且不佔用任何空間用於佈局目的)。

當用戶單擊一個按鈕時,您將更改可見性。在這裏,您甚至可以應用任何您想要的動畫,例如您提及的淡入/淡出。

但是,您似乎只需更改按鈕的標籤,並根據您的活動狀態來處理該標籤。例如。首先它是一個開始按鈕,然後是一個停止。編程起來更容易,而且速度更快。

1

您可以在一個佈局中使用兩個組件(例如,按鈕和按鈕)來管理它。一個會有參數可見性=「消失」和一個可見性=「可見」。所以你只需要在代碼中改變這個值。

btnFirst.setVisibility(View.VISIBLE); 
btnSecond.setVisibility(View.GONE); 
1

我認爲這可以幫到你。

public class MainActivity extends Activity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button button_1 = (Button) findViewById(R.id.button1); 
     final Button button_2 = (Button) findViewById(R.id.button2); 
     button_2.setVisibility(View.INVISIBLE); 
     button_1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       button_1.setVisibility(View.INVISIBLE); 
       button_2.setVisibility(View.VISIBLE); 
      } 
     }); 
     button_2.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       button_2.setVisibility(View.INVISIBLE); 
       button_1.setVisibility(View.VISIBLE); 
      } 
     }); 
    } 

如果你想創建你的按鈕2動態,那麼你可以使用

 RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout1); 
     Button button_2= new Button(getApplicationContext()); 
     button_2.setText("button 2"); 
     button_1.setVisibility(View.INVISIBLE); 
     layout.addView(button_2, button_1.getLayoutParams()); 

,而不是

final Button button_2 = (Button) findViewById(R.id.button2); 

希望它會幫助你,如果你想佈局那麼我也可以帖子。