Invisible ImageView无法响应点击 - 如何修复?

时间:2017-03-19 19:30:13

标签: java android android-layout android-imageview android-view

我在Android应用中使用onTouch / onClick侦听器创建隐形ImageView时遇到了一些问题。

问题是,当ImageView设置为不可见时,点击不会注册(不会触发侦听器)。

我试图强制视图的宽度和高度为特定数字,认为在环绕模式下,不可见视图可能不会占用空间。我也尝试将clickable设置为true,并将其设置为可聚焦。 这些都没有区别。

可见时效果很好。

我想要一个对点击/触摸做出反应的隐形ImageView。 我该如何解决这个问题?

这是来自虚拟应用程序的一些代码,可以重现问题:

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.david.imageviewclicktest.MainActivity">

    <ImageView
        android:id="@+id/test"
        android:layout_height="100dp"
        android:layout_width="500dp"
        android:src="@drawable/listeners"
        android:visibility="invisible"
        android:clickable="true"
        android:focusable="true"></ImageView>

</android.support.constraint.ConstraintLayout>

代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        ImageView test = (ImageView)findViewById(R.id.test);
        test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "clicked",
                        Toast.LENGTH_SHORT).show();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:2)

不是使其不可见,而是使alpha通道为0.0f,即使其透明。

android:alpha="0"

或通过代码

imageView.setAlpha(0.0f);