0

一个我似乎无法找到并回答的一般性问题。

假设我的活动中有一个线性布局的开始按钮。当用户按下开始时,我希望它被一个不同的按钮(不仅仅是更改标签)替换为停止。在一个网站上,我只是隐藏一个按钮并显示另一个按钮(或淡出一个并以零不透明度隐藏它并显示另一个并淡入)。

这通常在 Android 中是如何完成的?我阅读了很多不同的建议,例如片段(一个按钮?),或相对布局或其他什么,但我只想用另一个相同大小的视图替换一个视图,并可能稍后对其进行动画处理。

4

4 回答 4

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

希望它会帮助你,如果你想要布局那么我也可以发布。

于 2013-10-29T10:26:17.060 回答
1

您可以做的一件事是覆盖按钮,例如使用Relativelayout,并确保按钮完美对齐(例如通过设置android:layout_alignLeft、顶部、底部和右侧)。然后,将其中一个的可见性设置为VISIBLE,将其他设置为INVISIBLE(视图不可见,但仍为布局目的占用空间)或GONE(视图不可见,并且不为布局目的占用任何空间)。

当用户单击一个按钮时,您就可以更改可见性。在这里,您甚至可以应用您想要的任何动画,例如您提到的淡入/淡出。

但是,您似乎只需要更改按钮的标签,并根据您可以在活动中维护的状态来处理它。例如,首先它是一个开始按钮,然后是一个停止按钮。这更容易编程,而且速度更快。

于 2013-10-29T10:00:39.870 回答
1

要隐藏一个视图,只需调用 setVisibility(View.GONE) 即可使视图就好像它从未出现在您的布局中一样。显示视图调用 setVisiblity(View.VISIBLE)。

于 2013-10-29T10:00:43.697 回答
1

您可以在一个布局中使用两个组件(例如 Button 和 Button)来管理它。一个将有参数 visibility="gone" 和一个 visibility="visible"。因此,您只需在代码中更改此值。

btnFirst.setVisibility(View.VISIBLE);
btnSecond.setVisibility(View.GONE);
于 2013-10-29T10:02:29.527 回答