【问题标题】:TextView above ImageView: Space between the top of the scaled SVG and the bottom of the TextView is scaledImageView 上方的 TextView:缩放后的​​ SVG 顶部和 TextView 底部之间的空间被缩放
【发布时间】:2019-08-28 17:06:58
【问题描述】:

在我的应用程序中,TextView 显示在包含 SVG 图像的 ImageView 上方。根据屏幕分辨率,被另一个ImageView 约束(顶部和底部eg)的ImageView 被缩放:因此它的SVG 也通过减小它的高度(和宽度,按比例)。因此,TextViewImageView 之间的空间在技术上与 Android Studio 中的空间相同,但在视觉上更长。

我想要的是:在 Android Studio 中保持与所有屏幕分辨率相同的空间,:8dp。

示例:

在Android Studio的可视化器中,空间为8dp:

在三星 Galaxy S7 中,我认为空间仍然是 8dp,但 SVG 已缩放:空间似乎更长。

证明 SVG 已缩放并且ImageViewTextView 的实际距离为 8dp:

无论屏幕分辨率如何,您知道如何保持与 Android Studio 中相同的空间吗?

警告

我真的想要缩放 SVG(所以我不希望,例如设置scale: fitXY 或类似的东西)。但我还希望TextView 底部和缩放后的 SVG 顶部之间的空间在所有屏幕分辨率上为 8dp。

【问题讨论】:

  • 用ImageView和TextView创建一个垂直链或者你可以使用Barrier。
  • 创建垂直布局会导致同样的问题,不是吗?

标签: android imageview android-constraintlayout


【解决方案1】:

这是一个猜测,但我认为是您的图像导致了问题。

正如您所说-您的空间始终是相同的 8dp,但是由于您的图像具有白色背景,因此当您使用更大的图像时,白色背景会缩放,并且看起来您的文本和图像之间的空间更大。

您可以使用一些具有非白色背景的视图并对其进行缩放以进行测试 - 我相信您会看到与视图大小相同的间距。如果是这种情况,请尝试更改您的图像。

【讨论】:

  • 图片是透明背景的SVG。是的,ImageView 始终是 8dp,我敢肯定,因为我刚刚为 ImageView 设置了背景颜色,并且此背景颜色出现在 TextView 的下方。所以 SVG 只是被缩放了,SVG 的顶部在其 ImageView 的顶部下方“远”。
【解决方案2】:

您可以使用带约束的LinearLayout布局,以确保无论如何都固定比例 例如

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:id="@+id/main_layout"
  android:orientation="horizontal"

>
    <ImageView
      android:id="@+id/img"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="40"
      />
    <TextView
      android:id="@+id/txt"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="60"

       />

 </LinearLayout>

所以无论如何,在我们的示例中,图像将始终占水平空间的 40%,而文本将占 60%。我相信你可以把这个想法应用到你的情况

【讨论】:

  • 即使使用(垂直而非水平)LinearLayout 并使用权重概念,SVG 也会被缩放,不是吗?这样问题就解决不了了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多