1、理想中的card样子

理想中的样子是:自定义的card 大小跟着外部viewGroup决定的大小,card内的图片占满card。底下有个text 显示title。实际中,看到的card的layout并不是viewgroup里决定的大小。当url的图片比较小时,反而是card自己的大小。

2、自定义的cardview

自定义card
LocalVideoCardView extends LinearLayout

对应的 R.layout.cloudtv_local_video_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center_horizontal"android:orientation="vertical" ><FrameLayout
        android:layout_width="match_parent"android:layout_weight="1"android:layout_height="0dp" ><ImageView
            android:id="@+id/local_movie_icon"android:layout_width="match_parent"android:layout_height="wrap_content"android:scaleType="centerCrop" /><LinearLayout
            android:id="@+id/local_bottom_ll"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:background="#b32b2a2a"android:paddingLeft="8dp"android:orientation="vertical" ><TextView
                android:id="@+id/local_movie_current_episode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:drawableLeft="@drawable/last_flag"android:drawablePadding="10dp"android:paddingTop="3dp"android:textColor="#ffffffff"android:singleLine="true"android:textSize="@dimen/app_text_16size" /><TextView
                android:id="@+id/local_movie_all_episode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="3dp"android:paddingBottom="2dp"android:textColor="#ffffffff"android:singleLine="true"android:visibility="gone"android:textSize="@dimen/app_text_16size" /></LinearLayout></FrameLayout><TextView
        android:id="@+id/local_movie_name"android:layout_width="match_parent"android:layout_height="30dp"android:paddingTop="@dimen/app_text_5size"android:gravity="center_horizontal"android:singleLine="true"android:textSize="@dimen/app_text_18size"android:textColor="@color/white" /></LinearLayout>

3、解决与分析

把cardView的 继承类改下
LocalVideoCardView extends FrameLayout 就可以了

3.1原因:

自定义的card 是属于viewGroup 而xml上布局的layout 是以

        View view = LayoutInflater.from(getContext()).inflate(R.layout.cloudtv_local_video_item, null, false);movieNameView = (TextView) view.findViewById(R.id.local_movie_name);iconView = (ImageView) view.findViewById(R.id.local_movie_icon);teleplayContainerView = (LinearLayout) view.findViewById(R.id.local_bottom_ll);currentEpisodeView = (TextView) view.findViewById(R.id.local_movie_current_episode);movieDescription = (TextView) view.findViewById(R.id.local_movie_all_episode);addView(view);

的形式添加到card中。xml中的layout 算是内层的layout了
而card继承的LinearLayout和FrameLayout的测量方式不一致导致子view的显示不一样

3.2内层原因

隐含的原因是:对

public View inflate(int resource, ViewGroup root, boolean attachToRoot) 

函数理解不足,每次习惯性的用下面这个
inflate(R.layout.cloudtv_local_video, null, false);

  1. 对于第二个参数
    每次在传第二个参数时都用了null 途方便,也就抛弃了R.layout.cloudtv_local_video 这个layout的最外层的属性,用了parent包裹的默认属性。
    其实把这个改成真正的parant时,layout的最外层属性是存在的。
    误用了好多年。

  2. 第三个参数
    是否直接把该view添加到ViewGroup 中

  3. 解决
    该问题,最简单的解决方式不需要改继承方式 直接把这个null改成真正的parent就可以了,这样就保留了layout的最外层属性
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”

    inflate(R.layout.cloudtv_local_video, this, false);

关于自定义card时的图片自适应.(inflate的理解)相关推荐

  1. Jquery图片自适应

    这里写自定义目录标题 Jquery图片自适应 Jquery图片自适应 点击图片的缩放效果 1.给图片添加自定义属性(获取原始的高度和宽度,方便接下来的使用) $(标签).attr('原始宽',this ...

  2. 安卓图片自适应高度时图片长度过大的解决方案

    上篇写了图片的自适应高度问题,但是开发中遇到了一些问题,也是查了一些资料才知道原因并解决了,什么问题呢,我在列表的自适应图片高度时,有一张图片怎么都显示不出来,直接黑屏了,查看log会有一段报错:Bi ...

  3. [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口

    [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口 百度很多都没用,有想法欢迎指点.

  4. Android 自定义ImageView加载图片

    自定义imageview功能: 可以实现设置图片显示的时候,依据本身的比例进行图片的缩放 加载图片效果: 使用ImageLoader来加载 图片: 首先将ImageLoader的jar包关联到项目中 ...

  5. 润乾报表html图片自适应,润乾报表

    润乾报表是一个纯JAVA的企业级报表工具,支持对J2EE系统的嵌入式部署,无缝集成.服务器端支持各种常见的操作系统,支持各种常见的关系数据库和各类J2 EE的应用服务器,客户端采用标准纯html方式展 ...

  6. 微信小程序wepy自定义card控件封装

    微信小程序wepy自定义card控件 在利用wepy开发小程序的过程中,需要使用自定义控件来实现,但是很多时候,若直接在page页面中写对应的控件,下次在另一个页面中,想使用同样的控件又需要重新绑定数 ...

  7. Android自定义相机拍照、图片裁剪的实现

    原文:Android自定义相机拍照.图片裁剪的实现 最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类 ...

  8. Angular6自定义指令实现多图片上传预览

    在做移动端开发多时候经常会遇到用户图片上传的需求,有单图片上传预览的需求,也有多图片上传预览的需求.自己刚遇到这个需求的时候有踩到各种个样到坑.经过多番尝试,下面将本人成功的一个案例分享出来(公司对外 ...

  9. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

最新文章

  1. Mac上实现ProxyChains-NG终端代理
  2. jmeter(十八)关联之XPath Extractor
  3. 学习Kotlin(一)为什么使用Kotlin
  4. php内核分析-fpm和df的问题思考
  5. html表单显示提示,html侧栏对应表单的提示显示
  6. 【分享】Lucene.Net的中文分词组件AdvancedChineseAnalyzer
  7. Supervisor管理hhvm进程
  8. 29.Jwt集成(3):token设置过期时间、异常判断
  9. HP Smart 未找到扫描仪
  10. zipf分布c/c++
  11. 什么是主数据,如何做好主数据管理?
  12. 2020年度十大高薪岗位出炉!程序员霸榜!
  13. Android Android 复制Assets文件到SD卡
  14. 特征值分解:特征值,特征向量,特征向量矩阵
  15. Linux 网络编程——TCP编程
  16. 关于帐号因诱导关注违规进行粉丝删除的处理通知
  17. oracle 转number日期,oracle number型日期转date型日期
  18. ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  19. 压测、压力测试分析、UV、PV、通用性能提高、并发
  20. Qt优秀开源项目之十:开源截图工具flameshot

热门文章

  1. 河南理工大学计算机学院杨合超,模式识别的主要方法及其应用
  2. 技术大牛?业务大牛?
  3. 精通java_Java学到什么程度才能叫精通?
  4. python自然语言处理工具NLTK各个包的意思和作用总结
  5. linux查看文件节点,Linux之索引节点inode(index node)
  6. 系统调用捕获和分析—Ring3层LD_PRELOAD机制进行库函数劫持
  7. 学习C++的笔记(算法与数据结构要求
  8. Centos7 自动化Kickstart+pxe实现无人值守批量安装Linux系统
  9. 小红伞居然流氓了一把
  10. java计算机毕业设计基于springboo高校大学生二手闲置商品交易平台