Android仿天猫搜索历史记录显示自定义布局
Android仿天猫搜索历史记录显示自定义布局
这两天都在弄搜索界面,网上查看了下,参考了下面这位兄弟的:
https://www.oschina.net/question/54100_32893
顺便把图也搬了
这个有个缺点,就是必须全屏,如果下面想添加布局的是不可能了,除非把这个自定义的view限制高度,但是这就不叫自定义了吧。
接着换另一位高手的:
http://blog.****.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);
}
间隔和距离可以再自定义item中的textview中设置margin或者padding