-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();
}
});
}
}
それを言及し忘れたが、私もそれを試してみました。問題は、画像上の位置に基づいてクリックをフィルタリングするために、変更不要のドロアブルのカラー値を混乱させることです。 – TheFooBarWay
取得できませんでした。どのドロアブル?その引き出しはどこに付いていますか? – azizbekian
ImageViewのイメージは、ドロウアブル(pngリソースファイル)で定義されています。さまざまな場所にさまざまな色があります。クリックすると背景色が何であるかを確認し、それに応じて反応します。問題のコードの場合、drawableはXMLのsrcタグの下にある "リスナー"です。 – TheFooBarWay