2017-03-19 14 views
-2

AndroidアプリでonTouch/onClickリスナーを使用して非表示のImageViewを作成する際に問題が発生しています。Invisible ImageViewがクリックに反応しない - 修正方法?

ImageViewが非表示に設定されていると、クリックが登録されない(リスナーがトリガーされない)という問題があります。

ビューの幅と高さを強制的に特定の数値にするようにしました。ラップモードでは、見えないビューがスペースを占有しないと考えていました。私はまた、クリック可能をtrueに、フォーカスを合わせるために同じに設定しようとしました。 これらのどれもが相違しました。

表示されていると、正常に動作します。

Click/Touchに反応する目に見えない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(); 
      } 
     }); 
    } 
} 

答えて

2

の代わりに、それは目に見えないアルファチャンネルは0.0fを作る作りますすなわち、それを透明にする。

android:alpha="0" 

またはコードによって

imageView.setAlpha(0.0f); 
+0

それを言及し忘れたが、私もそれを試してみました。問題は、画像上の位置に基づいてクリックをフィルタリングするために、変更不要のドロアブルのカラー値を混乱させることです。 – TheFooBarWay

+0

取得できませんでした。どのドロアブル?その引き出しはどこに付いていますか? – azizbekian

+0

ImageViewのイメージは、ドロウアブル(pngリソースファイル)で定義されています。さまざまな場所にさまざまな色があります。クリックすると背景色が何であるかを確認し、それに応じて反応します。問題のコードの場合、drawableはXMLのsrcタグの下にある "リスナー"です。 – TheFooBarWay

関連する問題