我有一个horizontalscrollview里面有一堆图像。现在我需要检测点击事件,以防在其中点击任何图像。简而言之,我需要放置在horizontalscrollview内部的图像索引,点击它。
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bgcolor" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="20dp"
android:src="@drawable/image1" />
<ImageView
android:id="@+id/imageview2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="20dp"
android:src="@drawable/image2" />
我试过玩OnTouchListener事件,但即使在滚动时也会触发。无论你点击何处,OnClickListener都没有被触发。
horizontalScrollView1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("Testing scrollview");
}
});
是否有解决方法可以在horizontalscrollview中显示所点击图像的索引?我想这可以通过“Gallery”小部件实现,但在API16中已弃用。任何人都可以通过HorizontalScrollView分享完成此任务的方法吗?
答案 0 :(得分:3)
将OnClickListener
附加到ImageView
中的每个HorizontalScrollView
小部件。根据传递给View
的{{1}},您将知道点击了哪个onClick()
。
具体做法是:
将ImageView
添加到布局中的每个android:onClick="heyMyImageGotClickedWhoHoo"
元素。
在加载此布局的活动中实施ImageView
方法。在正文中,您可以使用public void heyMyImageGotClickedWhoHoo(View v)
并将其与v.getId()
窗口小部件ID(例如ImageView
)进行比较,以确定点击的内容。
或者,您可以为每个R.id.imageview1
创建专用方法,而不是将它们全部路由到一个。在这种情况下,每个ImageView
属性都会有不同的值(例如android:onClick
),并在活动中使用匹配方法(例如omgTheFirstImageWasClicked
)。
答案 1 :(得分:0)
我认为ImageView的数量可能因您的情况而异。然后我会建议使用ID列表来记录它们。在将新ImageView插入HorizontalScrollView时,使用setId方法为每个ImageView添加一个自定义ID,然后将此ID添加到列表中。
int uniqueID = getNewID();
myImage.setId(uniqueID);
myIdList.add(uniqueID);
myScrollView.addView(myImage);
如果ImageViews的数量是固定的,那么你当然可以使用经典数组:
int[] ids = {R.id.firstImage, R.id.secondImage};
然后你的onClick方法(你必须将它添加到每个ImageView)将如下所示:
public void onClick(View v) {
for(int i=0; i<ids.size(); i++) {
if(v.getId() == ids.get(i)) {
Toast.makeText(this, "Index "+(i+1), Toast.LENGTH_SHORT).show();
}
}
}
编辑:如何创建有效的ID - Android: View.setID(int id) programmatically - how to avoid ID conflicts?