我在彼此之上制作了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布局是相对布局。
答案 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