Android仿天猫搜索历史记录显示自定义布局

Android仿天猫搜索历史记录显示自定义布局

这两天都在弄搜索界面,网上查看了下,参考了下面这位兄弟的:

https://www.oschina.net/question/54100_32893 

顺便把图也搬了

Android仿天猫搜索历史记录显示自定义布局_第1张图片

这个有个缺点,就是必须全屏,如果下面想添加布局的是不可能了,除非把这个自定义的view限制高度,但是这就不叫自定义了吧。

接着换另一位高手的:

http://blog.csdn.net/zxt0601/article/details/50533658 改的东西就是自定义的view布局,照搬就行,但是还是不行


我这里报错了,params = (MarginLayoutParams) child.getLayoutParams();这行报错了,显示:cannot be cast to android.view.ViewGroup$MarginLayoutParams

然后网上找了答案:

就是把报错的MarginLayoutParams重新构造,然后params也变成LayoutParams 的对象即:

1.params = (LayoutParams ) child.getLayoutParams();

2.还要把generateDefaultLayoutParams方法中设置为自适应WRAP_CONTENT就可以了

3.

public static class LayoutParams extends MarginLayoutParams {  
  
  
        public LayoutParams(Context c, AttributeSet attrs) {  
            super(c, attrs);  
        }  
  
  
        public LayoutParams(int width, int height) {  
            super(width, height);  
        }  
  
  
        public LayoutParams(ViewGroup.LayoutParams source) {  
            super(source);  
        }  
  
  
        public LayoutParams(ViewGroup.MarginLayoutParams source) {  
            super(source);  
        }  
    }  

4.把generateLayoutParams方法改了,变成

@Override
    public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
        return new LayoutParams(getContext(), attrs);
    }

另外还要添加两个方法

@Override
    public ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
        return super.generateLayoutParams(p);


    }


    @Override
    public ViewGroup.LayoutParams generateDefaultLayoutParams() {
        return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    }

Android仿天猫搜索历史记录显示自定义布局_第2张图片

间隔和距离可以再自定义item中的textview中设置margin或者padding

Android仿天猫搜索历史记录显示自定义布局_第3张图片


你可能感兴趣的:(优化)