源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android之ScrollView嵌套ListView和GridView冲突的解决方法

  • 时间:2022-06-15 23:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android之ScrollView嵌套ListView和GridView冲突的解决方法
那么里面的ScrollView高度计算就会出现问题。我们也就无法得到想要的效果。 核心解决方案: 重写ListView或者GridView的OnMesure 方法。
[u]复制代码[/u] 代码如下:
public class MyListView extends ListView {         public MyListView(Context context) {                 super(context);         }         public MyListView(Context context, AttributeSet attrs) {                 super(context, attrs);         }         public MyListView(Context context, AttributeSet attrs, int defStyle) {                 super(context, attrs, defStyle);         }         @Override         protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {                 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,                                 MeasureSpec.AT_MOST);                 super.onMeasure(widthMeasureSpec, expandSpec);         } }
GridView
[u]复制代码[/u] 代码如下:
public class MyGridView extends GridView {       private boolean haveScrollbar = true;       public MyGridView(Context context) {           super(context);       }       public MyGridView(Context context, AttributeSet attrs) {           super(context, attrs);       }       public MyGridView(Context context, AttributeSet attrs, int defStyle) {           super(context, attrs, defStyle);       }       /**       * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true       *        * @param haveScrollbars       */       public void setHaveScrollbar(boolean haveScrollbar) {           this.haveScrollbar = haveScrollbar;       }       @Override       protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {           if (haveScrollbars == false) {               int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);               super.onMeasure(widthMeasureSpec, expandSpec);           } else {               super.onMeasure(widthMeasureSpec, heightMeasureSpec);           }       }   }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部