项目中要求显示竖线,并且竖线高度不确定,竖线的高度要随着内容的变化而变化。不能使用match_parent 充满,也不能在布局中写死,此时使用

android:layout_height="wrap_content"

将不起作用,反而会充满整个屏幕。我在网上搜索了一番,关于这个问题只找到了这样一篇文章 https://blog.csdn.net/gufengpiaoyi/article/details/50129355 ,但是并没有解决实际遇到的问题。经过几天之后想到了一个办法解决了使用<View>作竖线高度动态变化的问题。

解决办法:在竖线的外层套一个父布局RelativeLayout,并且随竖线一起变化的组件同样嵌套在RelativeLayout中,这是最关键的一步。将竖线<View>任意赋值,然后利用相对布局的特性layout_alignBottom和layout_alignTop 来强行设定竖线的上限和下限,这样就解决了高度动态变化的问题。具体使用的实例如下。

1、静态:XML中使用

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout
android:id="@+id/total_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorWhite"> <View
android:id="@+id/verticaline"
android:layout_width="1dp"
android:layout_height="@dimen/y10"
android:layout_marginLeft="@dimen/x38"
android:layout_alignBottom
="@+id/web"
android:layout_alignParentTop
="true"
android:background="@color/colorDivide"/> <TextView
android:id="@+id/tv_conversationContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/x72"
android:layout_marginTop="@dimen/y24"
android:layout_marginRight="@dimen/x88"
android:textColor="#464646"
android:textSize="@dimen/y38" /> <WebView
android:id="@+id/web"
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:layout_below="@+id/tv_conversationContent"
android:layout_marginRight="@dimen/x88"
android:layout_marginLeft="@dimen/x60"
android:layout_marginTop="@dimen/y24" /> </RelativeLayout>
</layout>

上面的布局是Recyclerview的item的布局,在布局中id为verticaline 的View是要显示的竖线,TextView和WebView负责显示从服务器获取的数据,数据内容、高度不确定。这里要求竖线的高度随着TextView和WebView的内容高度变化而变化。所以这里竖线设置的下限是WebView底部,通过layout_alignParentTop的方式让竖线的上限直接置顶。具体请看上述布局中斜体加粗部分。

2、java代码中动态设置

 RelativeLayout.LayoutParams layoutParams= (RelativeLayout.LayoutParams) binding.verticaline.getLayoutParams();
layoutParams.addRule(RelativeLayout.ALIGN_BOTTOM,binding.web.getId());

其中binding.web代表这上面xml中的WebView,binding.verticaline代表上面xml中的竖线View。通过这样一个办法的设置就限定了竖线高度View的下限是web为底,与上面xml中竖线的效果相同。同理,通过这样的代码还可以设定竖线高度的上限,具体请参照addRule的方法,这个在网上很容易就能查到。

结束语:网上关于View竖线高度问题解决的方式少之又少。希望这个方法能够帮助到您,有什么疑问可以在下面的评论区留言,我能及时看到。但是如果您是几年后看到的这篇文章,那我就不能确保能够及时回复了。

Android中竖线随内容高度变化而变化的问题和解决办法的更多相关文章

  1. 我的Android进阶之旅------>Android字符串资源中的单引号问题error: Apostrophe not preceded by 的解决办法

    刚刚在string字符串资源文件中,写了一个单引号,报错了,错误代码如下 error: Apostrophe not preceded by \ (in OuyangPeng's blog ) 资源文 ...

  2. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  3. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

    在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...

  4. eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法

    eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...

  5. android开发找不到模拟器(PANIC: Could not open:)解决办法

    android开发找不到模拟器(PANIC: Could not open:)解决办法   2013/4/3 17:44:15 0人评论 213次浏览 分类:android开发 在系统环境变量设置名为 ...

  6. 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法

    转自原文 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法 写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加 ...

  7. ie、firefox、chrome中关于style="display:block" 引发的页面布局错乱的解决办法

    ie.firefox.chrome中关于style="display:block" 引发的页面布局错乱的解决办法: table中tr 添加style="display:b ...

  8. Bootstrap中关闭第二个模态框时出现的问题和解决办法

    Bootstrap中关闭第二个模态框时出现的问题和解决办法 1.关闭第二个模态框时,第一个模态框跟着消失. 解决办法: 第二个模态框的代码不要写在第一个模态框里面,确保两个模态框相对独立; 2.关闭第 ...

  9. VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法

    VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法 在linux上安装nginx 请参考:Linux Centos7 安装 nginx 在虚拟机centos7上安装nginx之 ...

随机推荐

  1. 关于getClass()的一些自己的见解

    通过观看视频讲解,我得知,Class 老师讲解的是 这个是类的类,即是管理类的类.当时不是很理解,随后查询了相关资料后,以及真切的运行了几行代码后,才有一些深层次的体会, 在这里想要跟大家分享一下.如 ...

  2. Oracle参数Arraysize设置对于逻辑读的影响分析

    说明: 当执行一条SQL查询的时候,为了获得满足的数据,查询在这个过程中完成解析,绑定,执行和提取数据等一系列步骤,这些步骤都是单独执行的,满足条件的数据行必须由数据库返回给应用:对于任何大小的结果集 ...

  3. ExcelPackage 读取、导出excel

    private static string GetString(object obj) { try { return obj.ToString(); } catch (Exception ex) { ...

  4. LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树 C++

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  5. 17Linux_mariadb_PXE+Kickstart

    Mariadb mariadb-client mariadb-server # yum groupinstall mariadb mariadb-client mariadb-server -y # ...

  6. Adobe Flash player ActiveX下载地址

    http://www.adobe.com/support/flashplayer/downloads.html http://download.macromedia.com/pub/flashplay ...

  7. SpringMVC中的一些注解

    @Controller:表明该类是一个Controller: @RequestMapping(参数) :为类或者方法定义一个url @RequestParam(value = "id&quo ...

  8. unfortunately,*********** has stopped及卸载模拟器上的多余不用apk

    虽然不知道是怎么了,但是项目进不去了,害的我一脸雾水,百度了下好像没什么人遇到过这问题,都没找到解决办法,那只好来个简单粗暴的,卸载重新安装apk ,希望有大神知道原因和其他方法的欢迎留言或者评价给出 ...

  9. 学生管理系统(javaweb版)

    准备用javaweb 的技术做一个简单的学生管理系统 打算不用登陆的那种,直接进入管理界面. 完成增删改查的功能. 慢慢开始更新,先写那么多.

  10. Java框架spring Boot学习笔记(三):Controller的使用

    Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...