5

我在android中有两个按钮。Btn1 和 Btn2。默认情况下我需要显示 Btn1,单击时我需要显示 Btn2 来代替 Btn1。再次单击 Btn2 时,应将其替换为 Btn2。请帮我举个例子..

我的代码:

btn1 = (ImageView) findViewById(R.id.firstbtn);

        btn2 = (ImageView) findViewById(R.id.secondbutton);
        btn2.setVisibility(ImageView.GONE);

        btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                btn2.setVisibility(ImageView.VISIBLE);
            }
        });

        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                btn2.setVisibility(ImageView.GONE);




            }

        });

提前致谢

4

4 回答 4

6

您可以使用相同的按钮并交替更改其标签,并且根据级别您可以进行检查并执行适当的工作。

根据您更新的代码了解您正在使用 ImageView 所以试试这个

   ImageView btn = (ImageView) findViewById(R.id.secondbutton);
    btn.setTag("1");//can use one empty String "" and null instead of "1" and "2" for optimization

        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                Object obj = v.getTag();

                if(obj instanceof String){
                     if("1".equals(obj)){
                         v.setTag("2");
                         //Your first button state 
                     }else if("2".equals(obj)){
                         v.setTag("1");
                         //Your second button state 
                     }

                }

...

如果您的情况特定于两个按钮,那么您可以使用两个字符串比较操作

ImageView btn = (ImageView) findViewById(R.id.secondbutton);
  btn.setTag(null);

    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            if(v.getTag() instanceof String){
                     v.setTag(null);
                     //Your first button state 
            } else {
                      v.setTag("");
                     //Your second button state 
            }

如果你想让你的代码正常工作

btn1 = (ImageView) findViewById(R.id.firstbtn);

        btn2 = (ImageView) findViewById(R.id.secondbutton);
        btn2.setVisibility(ImageView.GONE);

        btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                v.setVisibility(ImageView.GONE);
                btn2.setVisibility(ImageView.VISIBLE);

            }
        });

        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                v.setVisibility(ImageView.GONE);
                btn1.setVisibility(ImageView.VISIBLE);

            }

        });
于 2012-06-29T06:47:03.193 回答
2

改变这个

btn2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            btn2.setVisibility(ImageView.GONE);
        }

    });

经过

btn2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            btn2.setVisibility(View.GONE);
            btn1.setVisibility(View.VISIBLE);
        }

    });

和这个

 btn1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            btn2.setVisibility(View.VISIBLE);
        }
    });

经过

  btn1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            btn1.setVisibility(View.GONE);
            btn2.setVisibility(View.VISIBLE);
        }
    });
于 2012-06-29T07:02:35.047 回答
0

您可以在布局中创建两个具有相同位置的按钮,然后您可以设置所需的每个按钮的可见性和操作

于 2012-06-29T06:50:30.553 回答
0

可以使用方法 visible() 来修复其可见性。ToggleButton 或一个按钮并在单击事件上切换文本应该比两个按钮更好。

于 2012-06-29T06:50:44.530 回答