Android 2.3.3 ListView停止垂直滚动

时间:2012-11-12 14:26:34

标签: android android-layout vertical-scrolling

我有一个简单的应用程序,我为了学习来自.Net世界的Java / android而编写。在这个应用程序中,我有一个ListView。 ListView绑定到一个集合并显示应有的一切。我有一个下一个&上一个按钮,允许用户导航,这些工作也是如此。

我想要停止的是用户滚动列表的能力。我希望他们使用导航按钮。我想在用户滚动时必须引发一些事件。我打算拦截那个事件,只是“吞下”它。在寻找那些事件时,我遇到了SetScrollContainer(false)。问题是,做任何事似乎都没有关系。我仍然可以scroll vertically

所以我的最终问题是使用SetScrollContainer或拦截事件或其他选项是如何最好地禁用ListView中的用户滚动?

我还发现了一篇不起眼的文章,说要实现一个听起来像继承的自定义ListView。我对这个概念感到满意,但如果真的需要这种复杂性,我不确定android & java是否如此新鲜?

TIA JB

以下评论中讨论的代码:

//Get a handle on our ListView
lstvw_LiftData = (ListView)findViewById(R.id.lstvw_LiftData);

lstvw_LiftData.setOnTouchListener(new OnTouchListener() 
  {

      public boolean onTouch(View v, MotionEvent event) 
      {
          if (event.getAction() == MotionEvent.ACTION_MOVE) 
          {
              return true; // Indicates that this has been handled by you and will not be forwarded further.
          }
          return false;
      }
  }
);

setOnTouchListener error

1 个答案:

答案 0 :(得分:2)

代码我在一个小测试项目中编写,并且可以在列表视图中禁用滚动:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView lv = (ListView) findViewById(R.id.listV);
        String[] items = new String[10];

        for (int i = 0; i < 10; i++) {
            items[i] = "Item " + (i+1);
        }
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
        lv.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    return true;
                }
                return false;
            }

        });
    }
}

玩得开心。