• 在ScrollView嵌套ListView


    一开始折腾了半天检查了所有的代码,还是不能显示所有的列表,无语了,最后看到xml里面有这么一条

    警告:The vertically scrolling ScrollView should not contain another vertically scrolling widget (ListView)

    百度一下,竟然解决了,又涨姿势了,好高兴,现记录如下。

    布局部分代码如下:

    <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:fadingEdge="none"
            android:scrollbars="none" >
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:paddingBottom="50.0dip" >
    
                <com.farsunset.ichat.mydiy.MyListView
                    android:id="@+id/setting_listview"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" />
    
                <Button
                    android:id="@+id/logoutButton"
                    android:layout_width="fill_parent"
                    android:layout_height="50.0dip"
                    android:layout_marginLeft="10.0dip"
                    android:layout_marginRight="10.0dip"
                    android:layout_marginTop="30.0dip"
                    android:background="@drawable/button_blue"
                    android:gravity="center"
                    android:scaleType="centerInside"
                    android:text="@string/label_setting_logout"
                    android:textColor="@color/white"
                    android:textSize="14.0sp" />
            </LinearLayout>
        </ScrollView>

    如果不用自定义的ListView的话就会出现那条警告,导致listView无法正常显示。

    自定义的ListView代码如下:

    package com.farsunset.ichat.mydiy;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.ListView;
    
    public class MyListView extends ListView {
    
        public MyListView(Context paramContext) {
            super(paramContext);
        }
    
        public MyListView(Context paramContext, AttributeSet paramAttributeSet) {
            super(paramContext, paramAttributeSet);
        }
    
        public MyListView(Context paramContext, AttributeSet paramAttributeSet,
                int paramInt) {
            super(paramContext, paramAttributeSet, paramInt);
        }
        
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
    }

    记住这个onMeasure方法必须得重载。

    这样就ok了,感谢这篇文章:http://blog.csdn.net/gaojinshan/article/details/17055511

  • 相关阅读:
    第十三周编程总结
    第十二周总结
    第十一周课程总结
    第十周编程总结
    第七次实验报告及编程总结
    第六次实验报告及学习总结
    课程总结
    第十四周课程总结&实验报告
    第十三周课程总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/asijack/p/4282997.html
Copyright © 2020-2023  润新知