项目中要求显示竖线,并且竖线高度不确定,竖线的高度要随着内容的变化而变化。不能使用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. Problem B: 故障电灯(light)

    考虑对电灯进行差分:若第i个电灯和第i + 1个电灯状态不同,则在第i个位置上放一个球 这样我们就放置了不超过2n个球,且必然是偶数个 于是问题转化为:有m个球,每一步可以把一个球平移奇质数个位置,两 ...

  2. Error occurred during initialization of VM Could not reserve enough space for object heap

    Error occurred during initialization of VM Could not reserve enough space for object heap Java虚拟机(JV ...

  3. IntelliJ IDEA插件系列

    参考: IntelliJ IDEA插件系列 1. activate-power-mode 和 Power mode II 根据Atom的插件activate-power-mode的效果移植到IDEA上 ...

  4. 18Linux-LNMP-Linux就该这么学

    LNMP 编译环境包: [root@linuxprobe ~]# yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cp ...

  5. 用java输入分数,得出分数等级

    import java.util.Scanner;public class F {  public static void main(String[] args) {  // TODO 自动生成的方法 ...

  6. FireDAC 连接SQL Server一些要注意的地方(转)

    TFDConnection: FetchOptions.Mode 设置为fmAll, 返回全部结果, 否则默认只返回前50条, 效果与open以后再执行FetchAll一样 Specifies how ...

  7. (ZT)算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html 0.写在前面的话 我个人一直很喜欢算 ...

  8. Android Studio上传代码到Coding.net

    1.官方帮助文档:https://coding.net/help/doc/git/import-from-local.html 2.简单点: https://git.coding.net/javaka ...

  9. UE4 多人网络对战游戏笔记

    1.给物体施加一个径向力 定义一个径向力: URadialForceComponent* RadialForceComp; 在构造函数里赋默认值: RadialForceComp = CreateDe ...

  10. H5页面移动端IOS键盘收起焦点错位

    出现场景:IOS端,在弹出层点击input时调起键盘页面会被顶上去document.body.scrollOffset大于0,收起键盘时scrollOffset不变,造成焦点错位. 注:安卓手机点击时 ...