图像不会变得不可见

时间:2018-09-04 10:58:11

标签: android kotlin

我在彼此之上制作了2个ImageView。当我单击复选框时,我想将图像切换到顶部可见和不可见。但是一旦它变得可见,它就不会变回不可见。我也尝试使用View.GONE,但是它消失了而没有回到可见状态。

这里是我的代码

    val btn_click_me = findViewById(R.id.checkBox) as Button
    btn_click_me.setOnClickListener {
        val imageon = findViewById(R.id.imageViewOn) as ImageView
        if(imageon.visibility == View.VISIBLE) {
            imageon.setVisibility(View.INVISIBLE)
        }
        if(imageon.visibility == View.INVISIBLE){
            imageon.visibility = View.VISIBLE
        }
    }

我的xml代码:

<ImageView
    android:id="@+id/imageViewOff"
    android:layout_width="37dp"
    android:layout_height="34dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:visibility="visible"
    app:srcCompat="@drawable/haltestelleoff" />

<ImageView
    android:id="@+id/imageViewOn"
    android:layout_width="37dp"
    android:layout_height="34dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:visibility="invisible"
    app:srcCompat="@drawable/haltestelleon" />

<CheckBox
    android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toStartOf="@id/imageViewOff"
    android:text="" />

我的xml布局是相对布局。

2 个答案:

答案 0 :(得分:2)

请检查条件。应为if else,而不是if if条件。

  if(imageon.visibility == View.VISIBLE) {
        imageon.setVisibility(View.INVISIBLE)
    }else {
        imageon.setVisibility(View.VISIBLE)
    }

答案 1 :(得分:1)

在这里看:

if(imageon.visibility == View.VISIBLE) {
        imageon.setVisibility(View.INVISIBLE)
}
if(imageon.visibility == View.INVISIBLE){
        imageon.visibility = View.VISIBLE
}

在这里,您首先使其不可见,然后在第二步中进行检查并再次使其可见! 将其更改为if else