Android禁用滚动并单击列表视图

时间:2015-06-01 05:05:15

标签: android listview android-listview

我有一个简单的布局,一个列表视图,以及两个用于过滤和排序选项的图标。当我点击两个选项中的任何一个时,我的布局位于列表视图上方,仅覆盖屏幕的60%,从而使得下面的列表视图部分可见。我想要实现的是禁用该列表视图的滚动,只要叠加层可见,列表视图项都不应该是可点击的。

我尝试使用

setEnabled(false)
setClickable(false)
列表视图上的

但它没有任何区别。有什么其他方法可以实现这一目标。

3 个答案:

答案 0 :(得分:1)

我建议叠加层将在整个屏幕上。 然后,您可以使用权重(垂直)线性布局包裹叠加层(以达到60%/ 40%比率)。在线性布局中,将当前叠加层设置为第一个子窗口,并将第二个窗口放置为阻止触摸事件的透明视图。这样您就不需要对列表视图进行任何修改。

答案 1 :(得分:0)

要禁用滚动,您可以使用 OnTouchListener()

template <typename T>
class Proletarian
{
  public:
    typename T::NESTED* tn;
    Proletarian<T>()
    {
        typename T::NESTED* tNested = new typename T::NESTED;
        std::cout << tNested->var1;
    }
};

OR

listView.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;
    }
});

要禁用单击,请在自定义ArrayAdapter中覆盖isEnabled方法,如下所示

listView.setScrollContainer(false);

答案 2 :(得分:0)

您可以使用它来禁用父滚动视图

parentview.requestDisallowInterceptTouchEvent(真);

如果叠加层可见。