gpt4 book ai didi

android - 如何在相对布局内的图像上放置背景?

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:45 24 4
gpt4 key购买 nike

注意:我最终将此作为错误报告给此处的 android 项目:http://code.google.com/p/android/issues/detail?id=39159另请查看已接受的赏金答案,不幸的是,解决方案是使用绝对布局(即指定“dp”而不是“wrap_content”等)布局来解决问题。

在图像上放置背景时,我遇到了一些非常奇怪的行为。为了向您展示这个问题,我已经大大简化了这个问题。我所做的是将图像放置在相对布局中,并使用背景。似乎给 relativelayout 一个 padding 会导致图像的背景被 missdrawn。 Wrap_content 似乎搞砸了。

首先,这是演示问题的代码。请注意,在不使用线性布局并且只为 ImageView 提供背景的情况下也可以看到相同的行为,但这确实更好地说明了问题。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="60dp"
android:padding="5dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/black_bg" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/red_rectangle" />
</LinearLayout>
</RelativeLayout>
</FrameLayout>

这是 black_bg xml 文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF000000"/>
</shape>

这里是 red_rectangle: red_rectangle

请注意,这是一个引用图像,用于演示问题。我的实际图像有细节,所以不能是 .9.png

这是问题的截图:

Rendering error

尽管线性布局的宽度设置为“wrap_content”,但您可以看到图像宽度小于线性布局。如果我将 relativelayout padding 设置为 0dp,这个问题就会消失。

希望这是我在这里提供的一套内容相当完备的资源,因此人们可以根据需要自行尝试。

作为引用,我使用它在图像周围提供边框,因此我可以将线性布局(或图像本身)设置为具有填充,但在这种情况下问题仍然存在。

编辑:看来我可能需要更多关于此的上下文,因为答案集中在如何提供此边框上。这是一个更具上下文布局的屏幕截图。我一开始不想包括这个,因为它给问题增加了更多的困惑:

Screenshot

您看到的第一个 5dp 填充用于整个项目的内容(相对布局)。然后,正如我最初所说,除了您在 relativelayout 中看到的第一个填充之外,我的想法是“我可以将线性布局(或图像本身)设置为具有填充”。目前,此布局不应显示任何边框。

最佳答案

问题似乎与图像(在 ImageView 中)和设置为背景(在线性布局中)的不同拉伸(stretch)属性有关。设置为背景的图像不一定保持纵横比,而图像中的图像往往保持纵横比。当您将布局的高度设置为 60 dp 时,图像会缩小以保持纵横比,并在两侧留下黑色条纹。这对我有用:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="60dp"
android:padding="5dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/black_bg" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="60dp"
android:src="@drawable/asd"
android:scaleType="fitXY"
/>
</LinearLayout>
</RelativeLayout>
</FrameLayout>

关于android - 如何在相对布局内的图像上放置背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com