android 固定大小填充图片大小,java – Android ImageView – 填充宽度和调整大小以保持宽高比...-程序员宅基地

技术标签: android 固定大小填充图片大小  

我有一个View View,我在ListView中使用.

此RowView由左侧的ImageView和水平LinearLayout右侧的TextView组成,其中图像占40%的空间,文本占剩余的60%.

我希望布局以下列方式处理ImageView中图像的大小调整:

>水平拉伸图像,使其占据LinearLayout的40%

>垂直调整ImageView的大小以保持原始高宽比

这是我对布局的方法:

protected class RowView extends LinearLayout {

public ImageView iv = null;

public TextView tv = null;

private LinearLayout.LayoutParams ivlp = null;

private LinearLayout.LayoutParams tvlp = null;

public RowView(Context ct) {

super(ct);

setOrientation(LinearLayout.HORIZONTAL);

// Create the views

iv = new ImageView(ct);

ivlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 0.4f);

iv.setLayoutParams(ivlp);

iv.setAdjustViewBounds(true);

iv.setScaleType(ScaleType.FIT_XY);

tv = new TextView(ct);

tvlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 0.4f);

tv.setLayoutParams(tvlp);

tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);

// Add the views

addView(iv);

addView(tv);

}

}

我得到的结果是这样的:

据我所知:

> MATCH_PARENT正确地强制图像水平拉伸以填充40%的空间

> ImageView.setAdjustViewBounds(true)应该允许ImageView的任何大小调整,这是我想要的.问题是没有ImageView.ScaleType似乎做我想要的

> ImageView.ScaleType(ScaleType.FIT_XY)不是我想要的,因为它不保持纵横比.但是所有其他的,似乎没有拉伸ImageView的高度(这使得ImageView.setAdjustViewBounds(true)几乎没用).

我究竟做错了什么?这个简单的事情如此困难似乎是错的?

或者我是否真的必须努力扩展ImageView和Overriding onMeasure以强制调整大小和宽高比?

或者Matrix有一个聪明的技巧来完成工作吗?

解决方法:

我相信这就是你要找的东西:

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/myImage"

android:scaleType="fitCenter"

android:adjustViewBounds="true" />

标签:java,android,aspect-ratio,imageview,resize

来源: https://codeday.me/bug/20190629/1329683.html

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

智能推荐

【ABAP】OPEN SQL(六)「DELETE语句 | MODIFY语句」_sap modify-程序员宅基地

文章浏览阅读7.3k次,点赞63次,收藏49次。各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节继续讲解OPEN SQL中的DML语句,本节内容涉及到DELETE语句和MODIFY语句,希望大家喜欢!_sap modify

python计算均方根误差_如何在Python中创建线性回归机器学习模型?「入门篇」-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏2次。线性回归和逻辑回归是当今很受欢迎的两种机器学习模型。本文将教你如何使用 scikit-learn 库在Python中创建、训练和测试你的第一个线性、逻辑回归机器学习模型,本文适合大部分的新人小白。线性回归机器学习模型1.要使用的数据集由于线性回归是我们在本文中学习的第一个机器学习模型,因此在本文中,我们将使用人工创建的数据集。这能让你可以更加专注于学习理解机器学习的概念,并避免在清理或处理数据上花..._均方根误差python

2019腾讯春招暑期实习提前批编程题_2019互联网企业暑期实习-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏9次。错过了腾讯的春招编程题(在牛客笔试前已经电话面所以就没参加,有自己做C++的笔试,对C++不熟,感觉已经凉了),但是朋友做了便截图下来然后自己练习一下,给我的感觉就是,会做的就很快写完,不会的基本没有什么思路,总之很快写完了三道题,但是有两道是不会的。下面按题目给出我的代码,有错的恳请指正。1、不要看到这个就以为是背包问题,这个是从大到小的,也就是说什么面值的货币都有,所以就不存在比如..._2019互联网企业暑期实习

针对开发的项目的个人NABC-程序员宅基地

文章浏览阅读84次。首先我们的创意是结合我们所学的专业知识,由于每次周在野外进行大地测量实习的时候关于计算问题有遇到很多问题,对于手算,有可能会出现人为错误,再次回去重新计算,会浪费大量时间,而且会很麻烦,也不一定会完全正确。N(need)需求1对功能的规定1.1精度符合测量规范1.2满足的要求我们的创意将会满足测量的同学对于导线和水准测量方面的计算问题。1.3对与已有的软件有些方面比如..._nabc项目表格

编译原理—LR(0)分析表的构造(C++实现)_lr(0) c++-程序员宅基地

文章浏览阅读946次。构造识别活前缀的DFA若A->a.Bb属于 CLOSURE(I), 则每一个形如B->.r的项目也属于CLOSURE(I)根据DFA构建LR(0)分析表。_lr(0) c++

DHCP源码分析-系统概述_isc-dhcp-server源码-程序员宅基地

文章浏览阅读3.9k次。先名词解释下: DHCP:动态主机配置协议(Dynamic Host Configuration Protocol),是一个局域网的网络协议,使用UDP协议工作。它的前身是BOOTP(Bootstrap Protocol)初始引导协议。 BOOTP则可以自动地为那些主机设定TCP/IP环境。但BOOTP有一个缺点:您在设定前须事先获得客户端的硬体位址,而且,与IP的_isc-dhcp-server源码

随便推点

5.MySQL高级语句,你给我学!-程序员宅基地

文章浏览阅读959次,点赞2次,收藏6次。视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。4.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。3.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。6.视图的建立和删除只影响视图本身,不影响对应的基本表。

信息学奥赛一本通(2036:【例5.3】开关门)_奥赛一本通2036-程序员宅基地

文章浏览阅读5k次,点赞3次,收藏3次。2036:【例5.3】开关门时间限制: 1000 ms 内存限制: 65536 KB提交数: 723 通过数: 457【题目描述】宾馆里有n(2≤n≤1000)n(2≤n≤1000)个房间,从1∼n1∼n编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是22的倍数的房间“相反处理”,第三个服务员把所有编号是33的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第nn个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来..._奥赛一本通2036

curl连续请求页面卡死解决办法_curl_easy_init 重复-程序员宅基地

文章浏览阅读6.5k次。今天项目中遇到一个问题就是在后台用curl请求数据,连续请求url链接后页面会卡死502错误,最后解决办法是在 curl请求方法中加了CURLOPT_TIMEOUT就可以了,这样如果超出设置时间不影响页面其他的请求,到了设置时间请求也会停止curl方法如下:function get_request($url){ //初始化 $ch = curl_init(); c..._curl_easy_init 重复

@[],@()的使用-程序员宅基地

文章浏览阅读1.3k次。原文地址:City *city=[City new];_@[]

UE4学习:四种加载资源的方式_ue4c++怎么load模型资源-程序员宅基地

文章浏览阅读7.8k次,点赞2次,收藏18次。第一种: 如果该蓝图有C++类(或者说是从C++类创建的蓝图),直接进行加载[cpp] view plain copyATemp* spawnActor = GetWorld()->SpawnActor<ATemp>(ATemp::StaticClass()); 所有的加载资源并创建到场景中的方式都离不开SpawnActor这一句代码.如果你的蓝图包含了C++类,那么可以直接访..._ue4c++怎么load模型资源

IC 芯片 丝印反查 芯片型号 Mark code-程序员宅基地

文章浏览阅读3.9w次,点赞8次,收藏22次。1、丝印反查网:http://www.smdmark.com/zh-CN/search/code?id=YP2、Nexperia安世:在https://www.nexperia.cn搜索栏直接输入丝印即可查找到对应型号。_丝印反查

推荐文章

热门文章

相关标签