ScroolView 控制最大高度_scrollview限制最高高度_J.H.C的博客-程序员宅基地

技术标签: 学习笔记  android  

写项目是碰到的需求,是一个弹窗里面是提示文字,文字有可能会很多,作为一个弹窗高度不能太高,太高就不美观了,所以要限定弹窗的高度,需要满足以下几点:

* ScrollView 嵌套 TextView,限制TextView最大高度。
* TextView未达到最大高度时,自适应高度且不能滚动
* TextView达到最大高度时,可滚动。

那就对 ScrollView 进行调整:

public class MaxHeightScrollView extends ScrollView {

    private int maxHeight;

    public MaxHeightScrollView(Context context) {
        super(context);
    }

    public MaxHeightScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize(context, attrs);
    }

    public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initialize(context, attrs);
    }


    private void initialize(Context context, AttributeSet attrs) {
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MaxHeightScrollView);
        maxHeight = typedArray.getLayoutDimension(R.styleable.MaxHeightScrollView_maxHeight, maxHeight);
        typedArray.recycle();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (maxHeight > 0) {
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

}

XML :

       <com.test.widget.MaxHeightScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/dp_10"
            android:fillViewport="true"
            android:scrollbars="vertical"
            app:maxHeight="@dimen/dp_300">

            <TextView
                android:id="@+id/tv_msg"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="@color/col_333333"
                android:textSize="@dimen/sp_14" />

        </com.test.widget.MaxHeightScrollView>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36961698/article/details/121469794

智能推荐

Tableau学习笔记①③终(回归分析、时间序列分析)_tableau回归分析预测_添砖 Java的博客-程序员宅基地

一、回归分析回归分析:本质上是讲存在及可能存在的相关关系的变量拟合成直线或者曲线。据此,我们一方面可以总结出已有数据的规律和特征,另一方面还可以预测数据。1. 线性回归模型及参数解释简单的线性回归模型步骤:①人工服务接听量->列,呼入案头总时长->列;分析->取消聚合度量②添加回归分析:直接右键->趋势线->显示趋势线回归方程如上,R值越大越好,越大越拟合越有关联性,p值越小越好,p值决定了可信程度添加趋势线的几种方法:直接右键->_tableau回归分析预测

Core Dump_kill 程序主动出core-程序员宅基地

Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量。凡事皆有两面性,OS在出Co_kill 程序主动出core

浅析linux内核内存管理之PAE-程序员宅基地

浅析linux内核内存管理之PAE 早期Intel处理器从80386到Pentium使用32位物理地址,理论上,这样可以访问4GB的RAM。然而,大型服务器需要大于4GB的RAM来同时运行数以千计的进程,近几年来这对Intel造成了压力,所以必须扩展32位80x86所支

sass-程序员宅基地

本文来自阮一峰http://www.ruanyifeng.com/blog/2012/06/sass.html学过CSS的人都知道,它不是一种编程语言。你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事。很自然地...

java伪静态-程序员宅基地

现在UrlRewriter技术有两个技术平台 的,一个就是在Java方向的,另一个就是.NET方向的。今天我们讲的是Java方向的应用。首先让我们了解它的工作原理,说白了它就是一个简 单的过滤器(Filter) ,看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().下面我们就快速 的为你的网站搭建Url重写技术。第一步:..._伪静态java

通常的六种网络拓扑结构_网络结构有哪几种-程序员宅基地

通常的六种网络拓扑结构每条信道连接个网络节点,如果两个节点之间不存在信道,则通过中间节点进行转接。在信息传递的过程中,中间节点将所有接受到的信息收集起来,等到输出请求空闲时,再转发至下一节点。通常的点-点信道子网有六种网络拓扑结构,分别为:星形、环形、树形、总线型、网状形、混合型。1. 星形..._网络结构有哪几种

随便推点

MTK虚拟sensor梳理-程序员宅基地

MTK虚拟sensor梳理一 虚拟sensor注册以倾斜检查虚拟sensor为例,梳理虚拟sensor的控制流和数据流倾斜虚拟sensor驱动在SCP virt_driver里tilt_detector.c,MTK SCP侧的虚拟sensor都是存放在这个目录下。wakeup------抬起唤醒liftDetector----拾起察觉liftPdDetector—拾起察觉(带防误触检查)stepRecognition —虚拟计步器tiltDetectorStart(){mTask.ta

Eureka源码中isReplication的业务含义是什么_replication=false-程序员宅基地

官方注释是这样的:true if this is a replication event from other replica nodes, false otherwise.isReplication = true 代表这个请求是同步请求,指的是Eureka Server集群之间的数据同步。isReplication = false 代表这个请求是注册请求,指的是Eureka Client发起的服务注册请求。EurekaHttpClient.class代表的是Eureka Cli.._replication=false

西北工业大学NOJ Python程序设计作业31-40_西工大pythonnoj31-40-程序员宅基地

第4季:枚举算法(Season 4-Enumeration algorithm)(31-40)前置知识点建议大概了解下述函数库的基本运用之后再完成题目会更顺利。基本运算符:(摘自菜鸟教程)注意区分/和//的区别二维数组python定义二维数组略微麻烦:a=[[0 for i in range(1000+5)] for i in range(1000+5)]定义了一个a[][]a[][]a[][]大小为(1005*1005)初始值为0math.gcd语法:math.gcd(x,y)返_西工大pythonnoj31-40

IDE spring boot mysql连接问题-程序员宅基地

控制台报错:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimez...

利用EarthWorm轻松穿透目标多级内网_多级内网穿透-程序员宅基地

0x01 ew 快速穿透目标多级内网:简要环境说明:1.win2008R2 假设为目标边界web服务器,可正常访问公网2.假设其公网ip为 192.168.3.233.假设其内网ip为 192.168.32.1311.win2008 假设为目标内网数据库服务器,可正常访问公网2.假设其内网ip为 192.168.32.1701.win7 假设为自己公网的vps2.假设其公网..._多级内网穿透

解决node-sass安装报错的问题-程序员宅基地

本文主要解决libsass.vcxproj:error MSB4019相关的编辑错误安装node-sass错误主要体现在几个方面1、版本不匹配,注意node的版本与node-sass版本是否匹配2、注意是否安装了Build Tools,如果安装了,需要在环境变量中添加:VCTargetsPath我的路径是"C:\Program Files (x86)\Microsoft Vis..._node-sass安装报错

推荐文章

热门文章

相关标签