我有一个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;
}
});
}
从这段代码中,我可以在第一次点击时使表格可见,但它在下一次点击时不会消失。有什么选择吗?
答案 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);