アプリでギャラリーを使用しました。
その中で私はこのような各ギャラリーアイテムに2つの画像を持っています
ウサギとマウスの各画像は、1つのギャラリーアイテムとして結合されます。
したがって、両方の画像にonclickListenerを指定しますが、そのように指定すると、それらの画像をタッチしてもスクロールできません...その個々の画像のonClickListenerを削除すると、スクロールできます。
各画像のスクロールとonClickの両方をアーカイブする方法。
アプリでギャラリーを使用しました。
その中で私はこのような各ギャラリーアイテムに2つの画像を持っています
ウサギとマウスの各画像は、1つのギャラリーアイテムとして結合されます。
したがって、両方の画像にonclickListenerを指定しますが、そのように指定すると、それらの画像をタッチしてもスクロールできません...その個々の画像のonClickListenerを削除すると、スクロールできます。
各画像のスクロールとonClickの両方をアーカイブする方法。
これはあなたの質問に答えます。onClickとGesturesの両方をアクティビティで処理できるようにする必要があります。
私の場合、親アクティビティへのコールバックを処理するリスナーでGallery.setOnItemClickListenerを使用しました。
上記の解決策のようにアクティビティをリッスンさせたとき、クリックは登録されませんでした。
私もこの問題に直面しました。そして2日間働いた後、私はこれに対する完璧な解決策を見つけました:
onItemClickListener
ギャラリーにも設定。活動については、ギャラリーや活動を聞いてonTouchEvent
、生の座標を書き留めてください
@Override
public boolean onTouch(View v, MotionEvent event) {
x = (int)event.getRawX();
y = (int)event.getRawY();
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
x = (int)event.getRawX();
y = (int)event.getRawY();
return super.onTouchEvent(event);
}
onItemClick
ギャラリーの場合は、ギャラリー内の各ビューを取得し、クリック座標を確認します。
Rect frame = new Rect();
image[i].getGlobalVisibleRect(frame);
if (frame.contains(x, y)) {//do whatever you want}
私はこれと同じ問題を抱えていましたが、それはかなり簡単に解決しました。私が行ったことは、setOnItemClickListenerをGalleryViewに追加してから、必要なビュー(私の場合はTextView)を取得することでした。
private boolean isVisble = true;
gallery_images.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
TextView image_text = ((TextView)arg1.findViewById(R.id.image_text));
if(!isVisble){
isVisble = true;
image_text.setVisibility(TextView.VISIBLE);
}
else{
isVisble = false;
image_text.setVisibility(TextView.GONE);
}
}
});
あなたの場合、最初にどの画像が表示されているかを確認し、その情報に基づいてビューを操作できます。お役に立てれば
私の活動には複数のギャラリーがあり、そのようにしています。
の実装OnItemClickListener
:
public class ImageBoardActivity extends Activity implements OnItemClickListener {
オーバーライドonItemClick()
メソッド
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
// do what you want here...
}
私の解決策:
これをしないでください!
:=))(これを解決するために6時間以上費やしました..私にはうまくいきませんでした...)別のアプローチを使用しました(異なるレイアウト)