一個我似乎無法找到和回答的一般問題。用另一個視圖替換視圖
說我在我的活動中有一個線性佈局的開始按鈕。當用戶按下開始時,我希望它被替換爲一個不同的按鈕(不僅僅是改變標籤),說停止。在一個網站上,我只需隱藏一個按鈕並顯示另一個按鈕(或淡出一個,在零不透明度下隱藏並顯示另一個按鈕並淡入)。
這通常在Android中完成?我閱讀了很多不同的建議,比如Fragments(對於一個按鈕?),或者相關的佈局或者其他任何東西,但我只是想用另一個相同大小的視圖來替換一個視圖,並且稍後也可以對它進行動畫處理。
一個我似乎無法找到和回答的一般問題。用另一個視圖替換視圖
說我在我的活動中有一個線性佈局的開始按鈕。當用戶按下開始時,我希望它被替換爲一個不同的按鈕(不僅僅是改變標籤),說停止。在一個網站上,我只需隱藏一個按鈕並顯示另一個按鈕(或淡出一個,在零不透明度下隱藏並顯示另一個按鈕並淡入)。
這通常在Android中完成?我閱讀了很多不同的建議,比如Fragments(對於一個按鈕?),或者相關的佈局或者其他任何東西,但我只是想用另一個相同大小的視圖來替換一個視圖,並且稍後也可以對它進行動畫處理。
要隱藏一個視圖,只需調用setVisibility(View.GONE),它將使視圖看起來好像從未在您的佈局中一樣。顯示視圖調用setVisiblity(View.VISIBLE)。
你可以做的一件事是覆蓋按鈕,例如使用Relativelayout,並確保按鈕完美對齊(例如,通過設置android:layout_alignLeft
,頂部,底部和右側)。然後,將其中一個的可見性設置爲VISIBLE
,將其他人的可見性設置爲INVISIBLE
(視圖不可見,但它仍佔用空間用於佈局)或GONE
(視圖不可見,並且不佔用任何空間用於佈局目的)。
當用戶單擊一個按鈕時,您將更改可見性。在這裏,您甚至可以應用任何您想要的動畫,例如您提及的淡入/淡出。
但是,您似乎只需更改按鈕的標籤,並根據您的活動狀態來處理該標籤。例如。首先它是一個開始按鈕,然後是一個停止。編程起來更容易,而且速度更快。
您可以在一個佈局中使用兩個組件(例如,按鈕和按鈕)來管理它。一個會有參數可見性=「消失」和一個可見性=「可見」。所以你只需要在代碼中改變這個值。
btnFirst.setVisibility(View.VISIBLE);
btnSecond.setVisibility(View.GONE);
我認爲這可以幫到你。
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);
希望它會幫助你,如果你想佈局那麼我也可以帖子。
您可以在按下時更改按鈕的文字,也可以通過VISIBILITY完成。 –
您可以簡單地通過btn.setText(「stop」)設置按鈕的文本; – jyomin
謝謝,但我說它應該是一個不同的按鈕(不只是更改標籤)。 – PFort