对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
来源:互联网 发布:simulink 知乎 编辑:程序博客网 时间:2024/05/20 19:29
首先我们看两张效果图
第一张是当超过一屏幕时候的效果固定view
第二张是没超过一屏的时候添加的footerview
具体实现思路就是获取当前屏幕高度并转换成dp在除以你每一个item项的高度
用得到的值(减一是为了最后一项不显示不完全导致出现的问题)去和你的数据集合做比较 当大于等于的时候就添加footerview否则就固定布局下面请看代码 当然我们也可以获取listview item的高度来实现
注 xml中的高度单位是dp 获取到的是px 所以要转换成dp 下面会附上方法
如果有标题要将标题高度减去才能得到最多显示的数量
DisplayMetrics dm = new DisplayMetrics(); // 取得窗口属性 getWindowManager().getDefaultDisplay().getMetrics(dm); // 窗口的宽度 int screenWidth = dm.widthPixels; // 窗口高度 int screenHeight = dm.heightPixels; //获取listview的item的高度 View item=list.getAdapter().getView(0, null, list); item.measure(0, 0); System.out.println(item.getMeasuredHeight()+""); //得到一屏幕上最多放的数据数量 如有标题请将标题高度减去 int count = px2dip(MainActivity.this, screenHeight) / px2dip(MainActivity.this, item.getMeasuredHeight()); System.out.println(count + "count"); if (count - 1 >= data.size()) { findViewById(R.id.btn).setVisibility(View.GONE); View views = LayoutInflater.from(MainActivity.this).inflate( R.layout.sitem, null); list.addFooterView(views); } else { findViewById(R.id.btn).setVisibility(View.VISIBLE); }
dp转px px 转dp
/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 * * @param pxValue * @param fontScale(DisplayMetrics类中属性scaledDensity) * @return */ public static int px2sp(float pxValue, float fontScale) { return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 * * @param spValue * @param fontScale(DisplayMetrics类中属性scaledDensity) * @return */ public static int sp2px(float spValue, float fontScale) { return (int) (spValue * fontScale + 0.5f); }
demo地址
http://download.csdn.net/detail/applicaton/9461209
0 0
- 对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
- Fragment对于Listview未满一屏添加脚布局,满屏将View固定在屏幕下方的解决方案
- Flexbox如何将页面底部固定在屏幕最下方
- 蒙层Flexbox将页面底部固定在屏幕最下方,内容占满屏后紧跟其后
- 如何将TabHost置于屏幕的下方
- listview条目未满全屏时,button在listviwe下方,条目超过屏幕时,button在屏幕底端
- listview添加footerview的注意事项
- 横向listview( HorizontalListView) item平分屏幕的解决方案 可以一屏幕显示n个完整item
- 怎么把 ubuntu 系统的 工具条 挪到屏幕下方? 默认在屏幕左侧
- 最笨的将一物体在屏幕范围内拖动
- Listview添加完HeaderView或者FooterView后,点击相应的view出现IndexOutOfBoundsException问题修复
- 实现屏幕下方展示的TAB分页
- 实现屏幕下方展示的TAB分页
- 实现屏幕下方展示的tab
- 实现屏幕下方展示的TAB分页
- 去除MacBook屏幕下方的白条
- ListView添加删除FooterView
- ListView添加删除FooterView
- Android进阶UI之SlidingTabLayout实现ViewPager页卡滑动效果
- equals和hashcode方法
- 安卓按钮背景透明及按钮透明
- 夯实JAVA基本之一 —— 泛型详解(1):基本使用
- win7 python gensim安装
- 对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
- android短信拦截示例代码
- Android Activity和Fragment的转场动画
- 苹果开发:开发证书都显示“此证书的签发者无效”的解决方法
- 最短路,模版
- Hadoop是怎么分块的?
- go语言实现http服务端与客户端
- CodeForces 630I:Parking Lot【排列组合】
- [.NET开发] ASP.NET Core 1.0基础之依赖注入