如何通过单击相同的行使项目可见和不可见?

时间:2014-03-04 04:06:21

标签: android onclicklistener

我有一个Linearlayout - totalincome和另一个TableLayout normalincometable,它应该低于totalincome。当程序运行时,normalincometable将不可见。当用户点击“totalincome”时,应显示该表。如果用户点击“totalincome again”,表格应该消失。我试过这段代码,但它没有用。

totalincome.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        int x =0;
        // TODO Auto-generated method stub
        if (x==0)
        {
            normalincometable.setVisibility(View.VISIBLE);
            x=1;
        }
        else 
        {
            normalincometable.setVisibility(View.GONE);
            x=0;
        }
    });
}

从这段代码中,我可以在第一次点击时使表格可见,但它在下一次点击时不会消失。有什么选择吗?

7 个答案:

答案 0 :(得分:4)

试试这个:

@Override
public void onClick(View v) {
  if(normalincometable.getVisibility() == View.VISIBLE) {
    normalincometable.setVisibility(View.GONE);
  } else {
    normalincometable.setVisibility(View.VISIBLE);
  }
}

答案 1 :(得分:1)

因为您在按钮单击代码中定义了x,因此每当按钮单击它设置为0.在按钮单击范围外定义x。

答案 2 :(得分:1)

您已在onClick方法中声明 int x = 0; 。因此,当调用onClick时,它会将0分配给“x”。在课堂范围内宣布它。

答案 3 :(得分:1)

尝试这种方式:将x变量放在按钮onclick()之外或将x全局定义为

int x =0;
totalincome.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        // TODO Auto-generated method stub
        if (x==0)
        {
        normalincometable.setVisibility(View.VISIBLE);

        x=1;
        }
        else 
        {
            normalincometable.setVisibility(View.GONE);
                                x=0;
                        }


});

}

答案 4 :(得分:0)

像这样使用:

   int x =0;    
    totalincome.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        // TODO Auto-generated method stub
                        if (x==0)
                        {
                        normalincometable.setVisibility(View.VISIBLE);

                        x=1;
                        }
                        else 
                        {
                            normalincometable.setVisibility(View.GONE);
                                                x=0;
                                        }


                });

            }

答案 5 :(得分:0)

试试这个

Boolean isFirstTimeClicked=true;
totalincome.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if (isFirstTimeClicked)
            {
            normalincometable.setVisibility(View.VISIBLE);
            }
            else 
            {
                normalincometable.setVisibility(View.GONE);

                            }
isFirstTimeClicked=!isFirstTimeClicked;

    });

}

并在您的代码中声明了int x = 0;在onClick方法中。因此,当调用onClick时,它会将0分配给“x”。在课堂范围内宣布它。

答案 6 :(得分:0)

最简单的方法是

button.setVisibility(View.VISIBLE == button.getVisibility() ? View.GONE:View.VISIBLE);