如何动态改变ImageView高度

2023-11-21

我有一个用于 ListView 单元格的简单线性布局,它有一个图像视图。图像将从互联网下载,因此尺寸可以不同。

但是,我想将imageview的宽度设置为fill_parent,这是固定的,并在运行时动态改变图像高度。设置图像高度的规则: 如果图像的高宽比大于 1,则将 ImageView 设为正方形,意味着高度与宽度匹配。

如果图像的高宽比小于 1,则按比例调整大小。预计有两个样品如下。

第一个是 h/w1。

enter image description here enter image description here Thanks for your time.

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical"
    android:padding="10dp" >

        <TextView
        android:id="@+id/postTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="2"
        android:textColor="@color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

       <ImageView
        android:id="@+id/postImg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:scaleType="centerCrop"
        android:src="@drawable/dummy_image"
        android:contentDescription="@string/postImage"  />
   </LinearLayout>

您需要子类化 ImageView

覆盖 onMeasure,我还没有对此进行测试,但是您需要的所有变量都在那里,并且这个想法是正确的。您只需执行将图像的纵横比应用于图像视图的高度,如果它大于宽度,则将其设置为宽度。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    Drawable drawable = getDrawable();
    if (drawable != null)
    {
        //get imageview width
        int width =  MeasureSpec.getSize(widthMeasureSpec);


        int diw = drawable.getIntrinsicWidth();
        int dih = drawable.getIntrinsicHeight();
        float ratio = (float)diw/dih; //get image aspect ratio

        int height = width * ratio;

        //don't let height exceed width
        if (height > width){
            height = width;
        }


        setMeasuredDimension(width, height);    
    }
    else
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态改变ImageView高度 的相关文章

  • onActivityResult 中的完成活动不起作用

    我有一对必须同生共死的活动 基本上 AlphaActivity 会做一些工作 然后发送一个意图 startActivityForResult 对于 Beta 活动 当 Beta 活动完成时 我希望它发送一个意图 startActivity
  • ACTION_VIEW 的 Intent.createChooser 仅显示默认浏览器

    我正在尝试使用 Intent createChooser 显示应用程序选择器对话框 该对话框将列出用户手机中所有可用的网络浏览器 我正在使用下面的代码 Intent browserIntent new Intent Intent ACTIO
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 启动 Twitter 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Twitter 应用程序的 Android Intent https stackoverflow com questions 2077008 android intent for twitter ap
  • 如何编辑 gradle 依赖项

    我正在开发一个 android 项目 该项目在我的 gradle 文件中使用以下依赖项 compile com mapzen on the road 1 1 1 我想编辑其中一个文件 以添加一些缺少的功能并为该项目做出贡献 如何下载该项目并
  • 无法合并 Dex - Android Studio 3.0

    当我在稳定频道中将 Android Studio 更新到 3 0 并运行该项目时 我开始收到以下错误 Error Execution failed for task app transformDexArchiveWithExternalLi
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android SDK 中可用的所有“android.intent.action”操作的详尽列表是什么?

    大家好 我想知道标准 Android SDK 中定义的所有 Intent 操作是否有详尽的参考 我正在考虑完整的 android intent action someaction 名称 而不是 Intent 类中定义的方便别名操作的限制列表
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • 如何覆盖日期选择器的高度和宽度以填充父布局

    我有一个活动包含一个日期选择器 我想设置DatePicker适合屏幕 我试过这个答案 https stackoverflow com questions 6674667 how to customize date pickers width
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • 有没有办法在Android上创建一个三角形按钮?

    有没有办法创建一个三角形的按钮 我知道我可以将三角形图像作为背景 但这将使三角形之外的区域可单击 有没有办法固定按钮角 X 和 Y 以便我可以将其变成三角形 您可以覆盖OnTouch http developer android com r
  • 无法在 Android 模拟器中安装 apk

    我正在尝试通过 adb shell 在 ICS 模拟器中安装 apk 从一个站点下载 但出现以下错误 失败 INSTALL FAILED UID CHANGED 可能是什么问题 只需 rm r 有问题的数据目录即可 如果您在安装时遇到此错误
  • 带有空白白屏的 WebView

    我在 DialogFragment 中有一个 webview 它使用以下方式显示文档和 PDF它可以进行几次尝试 但如果用户尝试频繁打开和关闭对话框 webview 将显示空白屏幕 我已经尝试了所有的线程link1 https stacko
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传
  • WebView 在某些设备上如果不长按则不会滚动

    我有一个 WebView 设置如下 the web view mWebView WebView findViewById R id webView push the url on to the web view mWebView loadU

随机推荐

  • C++ 中的 RESTful 客户端 API

    是否有任何可用的开源库可以在 C 中实现 RESTful Client 用于将 HTTP 请求解释为 REST 服务调用的库 我的要求是连接到 Amazon Web Services 并获取 C 中给定用户帐户可用的 EC2 实例列表 及其
  • 在Scheme中捕获宏

    使用定义捕获宏的最简单方法是什么define syntax or define syntax rule在球拍 作为一个具体的例子 这是一个简单的例子aif在 CL 风格的宏系统中 defmacro aif test if true opti
  • Chrome - 多个请求

    每当我使用 chrome 向我的 web 应用程序发送 GET 请求时 根据我的 apache 访问日志 两个相同的请求 并非总是如此 但大多数时候 我无法重现它 它不是针对 favicon 发送到服务器 尽管 chrome 开发工具中只显
  • 如何更改 ASP.NET Core 中本地开发的默认 SSL 证书?

    在 Linux 上运行本地 ASP NET Core 应用程序时 如何将自己的证书配置为 Kestrel 使用的 默认 证书 我知道我可以运行dotnet dev certs https命令生成新的开发证书 但这将生成新的自签名证书 我不想
  • distance Between() 返回的结果不准确?

    I use distanceBetween Location 类来计算两点之间的距离 如下所示 private float getDistanceInMiles GeoPoint p1 GeoPoint p2 double lat1 dou
  • 设置列名 ddply

    如何设置汇总数据的列名 library plyr ddply data col1 col2 nrow like in ddply data col1 col2 function x data frame number nrow x 也许您正
  • 如何在控件聚焦时持续显示工具提示?

    如何在控件聚焦时持续显示工具提示 我已经尝试了很多事情 但似乎没有任何效果 现在我有类似以下内容
  • Angular - 无法按工作进行 ng-repeat order

    我已经尝试了很多 ng repeat 和 orderBy 的例子 但我无法让我的 json 与它一起工作 div div div release environment id div div div 和 JSON f
  • 获取CPU/内存利用率的跨平台方法[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 寻找一个库或相当跨平台的方法来获取 C C 中的 CPU 利用率 内存利用率等 除了 getrusage 之外 我需要整个系统 而不是一个进程 我查
  • Data Studio 中的自定义查询出现无效日期错误

    我正在尝试在 Data Studio 中使用自定义查询 BigQuery 准备图表 但是 在使用 Data Studio 日期参数时出现无效日期错误 DS START DATE and DS END DATE 这是我的查询 SELECT c
  • 访问共享网络文件夹

    我需要通过 VBA 访问网络文件服务器上托管的文件夹 该文件夹只能通过我有用户名和密码的服务帐户 与普通用户帐户不同 以书面形式访问 通过 UI 我可以看到该文件夹 并将其映射为本地驱动器 但为了以书面形式访问它 我需要从 Windows
  • “错误:选项 --single-version-externally-management 无法识别”表示什么?

    我似乎突然开始遇到错误error option single version externally managed not recognized使用时pip install与各种包 包括PyObjC and astropy 我以前从未见过这
  • ZLib Inflate() 失败并显示 -3 Z_DATA_ERROR

    我试图通过调用 inflate 函数来解压缩文件 但即使我使用网站上的示例程序 它也总是失败并出现 Z DATA ERROR 我想也许我的 zip 文件不受支持 我在下面附上了 zip 标题的图片 这是我编写的用于执行解压缩的函数 我一次读
  • 为什么用户定义的移动构造函数会禁用隐式复制构造函数?

    当我阅读 boost shared ptr hpp 时 我看到了这段代码 generated copy constructor destructor are fine if defined BOOST HAS RVALUE REFS exc
  • 如何知道 Firefox 中是否单击了刷新按钮或浏览器后退按钮? [复制]

    这个问题在这里已经有答案了 在 Firefox 中如何知道是否单击了刷新按钮或单击了浏览器后退按钮 对于这两个事件 onbeforeunload 方法是一个回调 对于 Internet Explorer 我的处理方式如下 function
  • ReactJS - FCM 无法在 safari 浏览器中工作[重复]

    这个问题在这里已经有答案了 我正在尝试在我的 ReactJS 应用程序中实现 FCM 推送通知 它在 chrome 和 firefox 浏览器中完美运行 但在 safari 浏览器中遇到问题 FirebaseError 消息传递 此浏览器不
  • 应用程序提供的字体列表 (iOS)

    有谁知道如何从 Xcode 中 info plist 文件中的 应用程序提供的字体 键获取自定义字体列表 谢谢 以下代码从 Info plist 中读取自定义字体文件列表 并从字体文件中提取完整的字体名称 部分代码复制自https stac
  • 在 .NET 应用程序中使用 ApacheFOP v1.0

    有人成功地将 Apache FOP v1 0 库编译为 NET DLL 吗 我正在使用位于以下位置的 IKVM 语法 http onjava com pub a onjava 2004 08 18 ikvm html 然而 编译后的DLL似
  • Karma 错误 - 未知提供商:$$asyncCallbackProvider

    尝试通过 grunt 运行我的业力测试 但出现错误 Error injector modulerr Failed to instantiate module ngMock due to Error injector unpr Unknown
  • 如何动态改变ImageView高度

    我有一个用于 ListView 单元格的简单线性布局 它有一个图像视图 图像将从互联网下载 因此尺寸可以不同 但是 我想将imageview的宽度设置为fill parent 这是固定的 并在运行时动态改变图像高度 设置图像高度的规则 如果