我有一个简单的应用程序,我为了学习来自.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;
}
}
);
答案 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;
}
});
}
}
玩得开心。
氪