Android setVisibility从隐形到可见不起作用

时间:2015-06-11 17:34:53

标签: android

我是Android开发的新手,我有一个问题,即尝试使用按钮将图像视图的可见性设置为不可见或可见,当可见性从可见变为不可见时,它会起作用,但它不会尝试从隐形回到可见时设置工作,这是我的代码:

XML:     

<ImageView
    android:src="@drawable/diagram_img"
    android:id="@+id/ImgDiagram"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:layout_width="320dp"
    android:layout_height="50dp"
    android:gravity="right"
    android:layout_centerHorizontal="true"
    android:textSize="40sp"
    android:text=""
    android:id="@+id/ViewInput1" />

<TextView
    android:layout_width="320dp"
    android:layout_height="50dp"
    android:gravity="right"
    android:text=""
    android:layout_centerHorizontal="true"
    android:textSize="40sp"
    android:layout_marginTop="50dp"
    android:id="@+id/ViewInput2" />

可见度函数:

 if (id == R.id.action_diagram) {
        if(triangleDiagram.getVisibility() == View.INVISIBLE) {
            triangleDiagram.setVisibility(View.VISIBLE);
        }
        if(triangleDiagram.getVisibility() == View.VISIBLE) {
            triangleDiagram.setVisibility(View.INVISIBLE);
        }
        return true;
    }

2 个答案:

答案 0 :(得分:0)

它应该是else-if语句。为什么?如果您有两个ifs,第一个将状态更改为可见,并且满足其他条件(可见),因此不可见代码正在执行

 if (id == R.id.action_diagram) {
        if(triangleDiagram.getVisibility() == View.INVISIBLE) {
            triangleDiagram.setVisibility(View.VISIBLE);
        }
        else if(triangleDiagram.getVisibility() == View.VISIBLE) {
            triangleDiagram.setVisibility(View.INVISIBLE);
        }
        return true;
    }

你知道,如果图表不可见(错误的代码如下):

    if(triangleDiagram.getVisibility() == View.INVISIBLE) { // evaluates to true
        triangleDiagram.setVisibility(View.VISIBLE); // changes to visible
    }
    if(triangleDiagram.getVisibility() == View.VISIBLE) { // diagram is visible so evaluates to true
        triangleDiagram.setVisibility(View.INVISIBLE); // diagram is going invisible
    }

答案 1 :(得分:0)

更改

if (id == R.id.action_diagram) {
        if(triangleDiagram.getVisibility() == View.INVISIBLE) {
            triangleDiagram.setVisibility(View.VISIBLE);
        }
        if(triangleDiagram.getVisibility() == View.VISIBLE) {
            triangleDiagram.setVisibility(View.INVISIBLE);
        }
        return true;
    }

if (id == R.id.action_diagram) {
    if(triangleDiagram.getVisibility() == View.INVISIBLE) {
        triangleDiagram.setVisibility(View.VISIBLE);
    }
    else if(triangleDiagram.getVisibility() == View.VISIBLE) {
        triangleDiagram.setVisibility(View.INVISIBLE);
    }
    return true;
}

因为代码的问题是视图设置为可见,然后它执行下一个if循环,其中视图再次变为不可见。