【问题标题】:android: listview inside a scrollView doesn't work?android:滚动视图中的列表视图不起作用?
【发布时间】:2012-01-31 13:07:44
【问题描述】:

我在scrollview 中有一个listview,但问题是scrollview 正在滚动,而listview 没有滚动。我认为这是由于scrollView

有工作解决方案的人可以在这里发布作为参考吗?

【问题讨论】:

  • 你的 ScrollView 一开始是怎么滚动的?
  • 这不是一个好习惯,但是如果您尝试在运行时为 listview 提供高度而不是可能的高度。见下面的链接:- stackoverflow.com/questions/3495890/…

标签: android listview scrollview


【解决方案1】:

一般情况下,您不能将可滚动的东西放在其他可滚动的东西中,它们以相同的方向滚动,并且结果是可靠的。有时这有效(例如,WebViewsViewPager 中),但这是例外,而不是常态。

要么:

  • ListView 移出ScrollView,或

  • ScrollView 的所有其余内容移动到ListView,无论是使用addHeaderView() 还是我的MergeAdapter 之类的东西

【讨论】:

    【解决方案2】:

    如果您将 ListView/任何可滚动视图放在 scrollView 中,它将无法正常工作,因为当您触摸屏幕时,触摸的主要焦点是父视图 (scrollView) 而不是子视图 (ListView)。

    【讨论】:

      【解决方案3】:

      ListView 在您的 XML 文件中必须具有如下固定高度

              <ListView android:id="@+id/lv"
                  android:listSelector="#0f0"            
                  android:layout_width="fill_parent"
                  android:layout_height="500px" />
      

      在Java文件中,在setContentView()

      之后写下代码
              lv = (ListView)findViewById(R.id.lv);
              lv.setAdapter(your adapter here);  // you have to add your adapter here             
      
              lv.setOnTouchListener(new ListView.OnTouchListener() {
                  @Override
                  public boolean onTouch(View v, MotionEvent event) {
                      if (event.getAction() == MotionEvent.ACTION_MOVE)
                      {
                          lv.scrollBy(0, 1);
                      }
                      return false;
                  }
              });
      

      对您的代码进行这些更改并进行测试。经过太多的实验,我写了这段代码。它工作 100% 正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多