私はScrollViewを作成し、それに添付されたOnClickListenersを持つImageViewsで塗りつぶしましたが、今はScrollViewをスクロールしようとすると、OnClickListenersが途中でスムーズにスクロールしないようです。各アイテムのOnClickListenersを持つScrollView?
これを修正する方法はありますか?それ以外の場合は、ScrollViewではなくListViewを使用しますか?
ありがとうございます!
私はScrollViewを作成し、それに添付されたOnClickListenersを持つImageViewsで塗りつぶしましたが、今はScrollViewをスクロールしようとすると、OnClickListenersが途中でスムーズにスクロールしないようです。各アイテムのOnClickListenersを持つScrollView?
これを修正する方法はありますか?それ以外の場合は、ScrollViewではなくListViewを使用しますか?
ありがとうございます!
ImageViewごとにOnClickListenerを持つ必要はありません。
コールバックの定義は
v
がクリックされた図である
public abstract void onClick (View v)
です。
目的に応じて、特定のビューを識別することができます。あなただけ(例えば、色合いを適用)、一般的な何かをしたい場合は、具体的には、例えばビューを識別するために必要がある場合、これは
...
public void onClick(View v) {
ImageView iv = (ImageView) v;
iv.setTint(Color.BLUE); // Or whatever generic operation you want
}
非常に簡単ですこれは、ビューが静的でない場合、私は通常、あなたが一意に識別するためにsetTag()
とgetTag()
メソッドを使用することができ、それを
...
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.save:
//do stuff
break;
case R.id.open:
//do stuff
break;
}
}
を識別するためのItemIDを使用して、XMLメニューの一部だ(と関連付ける有用なデータ!)各ビューで:
...
public void onClick(View v) {
// the MyViewInfo object was associated with the view somewhere else, presumably when the view was created
MyViewInfo info = (MyViewInfo) v.getTag();
File datafile = info.getFileName();
...
}
}
ありがとうございます!それはすべて動的なのでもう1つだけ、このonClick関数をタグが設定されているImageViewにどのように関連付ける必要がありますか? –
'onClick'メソッドを保持するクラスXは、' View.onClickListener'インターフェースを実装する必要があります。各ビューに対してsetOnClickListener(x)を呼び出す必要があります。ここでxはXのインスタンスです。コンテナビューでは、すべての子ビューのクリックイベントを伝えることができるほどスマートであれば、その上で 'setOnClickListener'を呼び出すだけでよいでしょう。親ビュー。 – CjS
はScrollViewにありますか? –