两个view并列显示,第二个view跟在第一个view的后面,如果长度过长,则第一个view宽度缩小。

直接上代码  用就完了!

public class TextWithImageLayout extends LinearLayout {private final int MARGIN = 40;private int mMargin;private int[] mChildWidthList;public TextWithImageLayout(Context context, AttributeSet attrs) {super(context, attrs);mMargin = MARGIN;}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int widthSize = MeasureSpec.getSize(widthMeasureSpec);int heightSize = MeasureSpec.getSize(heightMeasureSpec);int count = getChildCount();View firstChild = getChildAt(0);if (count > 1) {int firstChildWidth = firstChild.getMeasuredWidth();int firstChildHeight = firstChild.getMeasuredHeight();int otherChildrenWidth = 0;int otherChildrenHeight = 0;for (int i = 1; i < count; i++) {View child = getChildAt(i);int width;if (mChildWidthList == null) {width = child.getMeasuredWidth();} else {width = mChildWidthList[i - 1];}otherChildrenWidth += width;child.measure(width | MeasureSpec.EXACTLY, child.getMeasuredHeight() | MeasureSpec.EXACTLY);otherChildrenHeight = child.getMeasuredHeight();}int margin = mMargin * (count - 1);if (firstChildWidth + otherChildrenWidth + margin > widthSize) {firstChildWidth = widthSize - otherChildrenWidth - margin;}heightSize = firstChildHeight > otherChildrenHeight ? firstChildHeight : otherChildrenHeight;firstChild.measure(firstChildWidth | MeasureSpec.EXACTLY,firstChildHeight | MeasureSpec.EXACTLY);} else {firstChild.measure(firstChild.getMeasuredWidth(), firstChild.getMeasuredHeight());heightSize = firstChild.getMeasuredHeight();}setMeasuredDimension(widthSize, heightSize);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);int count = getChildCount();int left = 0;for (int i = 0; i < count; i++) {final View child = this.getChildAt(i);int width = child.getMeasuredWidth();int height = child.getMeasuredHeight();int top = (b - t) / 2 - height / 2;child.layout(left, top, left + width, top + height);left = left + width + mMargin;}}public int[] getChildWidthList() {return mChildWidthList;}public void setChildWidthList(int[] childWidthList) {this.mChildWidthList = childWidthList;}
}

Android 两个view并列显示相关推荐

  1. android 两个view切换动画,两个surfaceView实现切换效果

    需求:视频通话界面,两个surfaceView一个显示本端的视图,另一个显示对端的视图,由于显示比例的问题总会存在一个覆盖另一个的问题,为保证用户体验,规定小的覆盖大的视图上面,且点击小的视图可切花为 ...

  2. html中如何让两个按钮并列显示(中间紧密连接在一起,不会出现空格)

    这个实现很简单,使用ul-li或者table-tr把按钮包含进去就行了

  3. android 在指定位置添加布局,Android 如何动态添加 View 并显示在指定位置。

    引子 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击.作为 RD,我哗啦啦的就写好相关逻辑了.自测完成后,提测,PM Review 效果. 看完后,PM ...

  4. android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。

    引子 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击.作为 RD,我哗啦啦的就写好相关逻辑了.自测完成后,提测,PM Review 效果. 看完后,PM ...

  5. android中实现view的更新有两组方法

    android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用.     Android提供了 ...

  6. android view.isshown,源码解析view的显示判断用isShown()还是View.VISIBLE

    前言 平时我们对View的显示判断都是用简要的方式去判断,那么,究竟是用view.isShown()去判断还是用view. getVisibility() == View.VISIBLE 判断好呢?其 ...

  7. 【速记】Android让View的显示超出父容器

    场景,View在嵌套布局的时候,正常View都是显示在父容器内部的,超出部分将被裁剪,如果我们希望某个View不被父容器限制,可以超出父容器范围显示,可以使用Google 提供的android:cli ...

  8. android imageview.setVisibility(View.VISIBLE)设置无效,代码已执行但是图片不显示

    android imageview.setVisibility(View.VISIBLE)设置无效,代码已执行但是图片不显示 在网上找了很多文章,基本上都是说在设置setVisibility()之前, ...

  9. android如何给整个视图view圆角显示

    关于如何给一个view设置圆角,有哪些方法呢? 1.给该view设置一个圆角的背景,这是最常见的用法.如以下代码: round_bg.xml <?xml version="1.0&qu ...

最新文章

  1. kset_create_and_add
  2. gitlab mysql devel_服务器搭建gitlab+mysql+nginx+redis+Jekins
  3. 我总有办法让你今晚回不了家...
  4. WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)
  5. python selenium unittest_python+selenium+unittest单元测试框架
  6. 定义一个结构体指针需要分配存储空间?
  7. ACE editor 在线代码编辑极其高亮
  8. 【软件测试】α测试和β测试的区别
  9. ThinkPHP5 助手函数
  10. 146.PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
  11. 自动驾驶车辆控制 最终项目作业 实现分析
  12. 《Windows黑客编程技术》—— 学习历程
  13. PHP集成环境:这些年我用过的那些PHP环境
  14. DDR4、LPDDR4、LPDDR4x区别及DDR拓展
  15. Liang-Barsky裁剪算法
  16. ASP多媒体视频教程
  17. php fpm 关闭,php-fpm的启动、关闭、重启
  18. QQ游戏自动登录器V4.0
  19. nginx网关与gateway网关的区别
  20. ios12卡贴机(有锁)/无锁机 改电信VOLTE //高通基带//教程

热门文章

  1. PaperBye一个可智能改重的免费论文查重网站。
  2. html5+php视频播放器,一个好用的html视频播放器兼容主流浏览器
  3. 大型网站核心架构要素
  4. 如何将HTML转成图片?看这里你就会了!
  5. java后台将html转换为图片
  6. HTML转图片的JS插件-rasterizeHTML.js
  7. 马云怒怼阿尔法狗,称搞阿尔法狗没意义,人工智能的意义在哪?
  8. 快速排序算法的C语言实现
  9. 为什么炒股不如炒汇?
  10. 在虚拟的世界中,自由、平等永远是真正的程序员永久的追求