【问题标题】:List View inside a Scroll View滚动视图中的列表视图
【发布时间】:2012-03-21 12:01:20
【问题描述】:

我必须实现下面的屏幕。它在 480*800 像素的屏幕上看起来非常好。在低分辨率屏幕上,由于屏幕尺寸不足,结果滚动显示了非常小的空间供用户滚动浏览结果。

实现它的最佳方式是什么?

【问题讨论】:

标签: android listview scrollview


【解决方案1】:

我总是发现尝试将滚动的内容放入其他滚动的内容是一场噩梦,所以我可能会将您的视图顶部(结果班加罗尔到迈索尔日期)放在 ListView 标题中,这样它就会滚出屏幕

listView.addHeaderView(listViewHeader);

【讨论】:

    【解决方案2】:

    他们是对的。您不应该将列表视图放入滚动视图。代替它试试这个:

     <ScrollView android:layout_width="fill_parent" android:scrollbars="vertical"  
    android:layout_height="wrap_content" android:scrollbarStyle="insideOverlay">  
    <LinearLayout 
    android:id="@+id/itemContainer"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"  
    >     
    <!-- YOUR ELEMENTS WILL BE PLACED HERE -->
     </LinearLayout>
    </ScrollView>
    

    然后你可以从代码中添加项目:

    private LinearLayout container; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);                
        setContentView(R.layout.YOUR_XML);  
        container = (LinearLayout)findViewById(R.id.itemContainer);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( 
                 LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    /*CREATE YOUR ITEM*/
    /*AND PLACE IT INTO CONTAINER*/
    container.addView(YOUR_ITEM, layoutParams);
    } 
    

    【讨论】:

      【解决方案3】:

      将您以红色边框显示的部分放在具有自定义列表项的 ListView 中。我猜你真的不需要滚动视图。只需将排序和过滤按钮设置为父底部。以及按钮和列表项上方部分之间的列表视图。祝你好运。

      【讨论】:

        【解决方案4】:

        我尝试在 ScrollView 中使用 ListView,方法是使用下面链接中提供的我自己的代码作为答案。它对我来说工作正常。检查一次,如果你觉得不错就试试。

        How to use listview inside scroll view

        【讨论】:

          【解决方案5】:

          您可以将 ListView 放在 ScrollView 中。只需扩展 ListView 以覆盖 onTouchEvent 方法。像这样

          import android.content.Context;
          import android.util.AttributeSet;
          import android.view.MotionEvent;
          
          public class ChildScrollView extends android.widget.ListView {
              private int parent_id;
          
              public ChildListView(Context context) {
                  super(context);
              }
          
              public ChildListView(Context context, AttributeSet attrs) {
                  super(context, attrs);
              }
          
              public ChildListView(Context context, AttributeSet attrs, int defStyle) {
                  super(context, attrs, defStyle);
              }
          
              @Override
              public boolean onTouchEvent(MotionEvent event){
                  requestDisallowInterceptTouchEvent(true);
                  return super.onTouchEvent(event);
              }
          }
          

          【讨论】:

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