【问题标题】:Obtaining click coordinates in Android ListView OnItemClickListenerAndroid ListView OnItemClickListener 中获取点击坐标
【发布时间】:2011-09-28 10:28:41
【问题描述】:

假设我有一个 Android ListView,我将 OnItemClickListener 附加到:

ListView listView = (ListView) findViewById(...);
listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        [...]

当点击视图中的某个项目时,我可以通过获取view 的尺寸来找出对应的矩形。但是,我想更精确地获取相应的坐标,以识别用户实际点击的屏幕上的点。

不幸的是,OnItemClickListener API 似乎没有公开此信息。有没有其他方法来掌握这个细节(不用自豪地通过实现我自己的ListView 重新发明轮子)?

【问题讨论】:

    标签: android android-widget android-listview


    【解决方案1】:

    我也需要这样做。我在 ListView 上设置了 OnTouchListener 和 OnItemClickListener。触摸侦听器首先被触发,因此您可以使用它来设置一个变量,然后您可以从您的 onItemClick() 访问该变量。您的 onTouch() 返回 false 很重要,否则它将消耗水龙头。就我而言,我只需要 X 坐标:

    private int touchPositionX;
    
    ...
    
    getListView().setOnTouchListener(new OnTouchListener() {
      public boolean onTouch(View view, MotionEvent event) {
        touchPositionX = (int)event.getX();
        return false;
      }
    });
    
    getListView().setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (touchPositionX < 100) {
        ...
    

    【讨论】:

    • 这是一个不错的解决方案。谢谢。
    猜你喜欢
    • 2011-05-09
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多