用另一个视图替换视图
一个我似乎无法找到和回答的一般问题。用另一个视图替换视图
说我在我的活动中有一个线性布局的开始按钮。当用户按下开始时,我希望它被替换为一个不同的按钮(不仅仅是改变标签),说停止。在一个网站上,我只需隐藏一个按钮并显示另一个按钮(或淡出一个,在零不透明度下隐藏并显示另一个按钮并淡入)。
这通常在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