Android 如何让组件的高度等于宽度

Posted

技术标签:

【中文标题】Android 如何让组件的高度等于宽度【英文标题】:Android How to get the height equal the width of an component 【发布时间】:2020-01-26 09:18:24 【问题描述】:

我想让 ImageView 的高度等于它的宽度。我已经阅读了有关在 activity.xml 中使用“app:...”的内容。 但是,它说它找不到命名空间。在那之后,我发现了一个对我不起作用的代码。

是否有人有解决此问题的想法或建议?如果必须以编程方式完成,如果有一个使用 Kotlin 的示例,那就太好了。

【问题讨论】:

您说的是哪个组件?另外,请显示您已经尝试过的代码。 您可以创建custom imageview 并提供heightwidthwidth 相同,请参阅此链接它在java 中可能会对您有所帮助***.com/a/16506373/9792247 我认为 ConstraintLayout 有这样的功能,但由于我没有使用它 - 我不知道具体如何 正如我在关于 ImageView 的问题中所说的 @TakeInfos 看起来不错,但是我现在如何在我的代码中组合这个 SquareImageView?因为我只是通过 xml 中的 id 获取正常的 ImageView 【参考方案1】:

如果你想让 ImageView 的高度等于它的宽度,

以编程方式[动态方式]:

int widthOfImage = image_view.getLayoutParams().width;
image_view.getLayoutParams().height = widthOfImage ;

参考this answer

你可以用硬编码的方式:

  <ImageView
        android:layout_
        android:layout_
        android:src="@drawable/ic_launcher_background"/>

或者你可以像这样定义背景image_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#003778" />
<corners android:radius="6dp" />
<size android:
    android:/>
</shape>

并将其添加为 imageView 中的背景。 [记住它也是硬编码的]

【讨论】:

硬编码对我来说并不好(对不起,我没有提到) 我添加了动态方式。检查一下【参考方案2】:

您必须在 xml 文件中使用此自定义视图。

例子

<YourPackageName.SquareImageView
    android:id="@+id/squareImageview"
    android:layout_
    android:layout_
    android:src="@drawable/ic_launcher_background"/>

现在你必须在你的代码中绑定这个视图。喜欢 Fragment 或 Activity,无论你用过什么。

示例(这是 java 中的代码,您可以在 kotlin 中更改它):-

SquareImageView imageView = findViewById(R.id.squareImageview);

【讨论】:

以上是关于Android 如何让组件的高度等于宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ionic 中使元素的高度等于其宽度?

如何获取 android studio 组件(按钮、文本等)大小(宽度、高度或默认大小)

反应:使div的宽度等于高度。高度计算不正确

为啥我不能让按钮的高度等于它们的宽度? [复制]

ImageView 适合高度,自动缩放宽度,保持纵横比

如何设置高度等于其宽度?