我绝对是 Android 开发的新手,我对将标题图片插入我的第一个应用程序的正确方法有一些疑问。
所以我有以下情况:我必须插入一个图像作为标题(一个图像下面有内容,经典的网站标题概念),所以我做了这样的事情:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="0dp">
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:scaleType="fitStart"
android:layout_height="250dp"
android:background="@drawable/carbonara" />
<!--
android:src="@drawable/carbonara"/>
android:background="@drawable/carbonara" />
-->
<TextView android:id="@android:id/text1"
style="@style/pastaTitleTextStyle" />
</LinearLayout>
如您所见,我正在使用此设置来设置标题图片:
android:background="@drawable/carbonara"
所以我使用 android:background 属性将 carbonara.jpg 图像设置为必须水平放置的 LinearLayout header 的背景填满屏幕(因为我指定了:android:layout_width="fill_parent")。
好的,所以使用 android:background 设置似乎在所有屏幕上都能正常工作(这就是我所说的在 Android Studio Activity 预览中更改设备),因为我将图像设置为背景,所以我认为它被“拉伸(stretch)”以填充空间。
但我不知道使用android:background 是否正确。有人对我说最好使用:
android:src="@drawable/carbonara"
而不是 android:background 设置。是真的吗?为什么必须填写标题? (在 HTML\CSS 中,使用 background-image 属性在布局中做这种事情是很常见的...)
所以我试着改变做:
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:scaleType="fitStart"
android:layout_height="250dp"
android:src="@drawable/carbonara" />
问题是现在图像不会填满某些屏幕尺寸(或者可能还有像素密度?)的整个空间
例如,这是预览设置 Nexus 5 作为设备:
如您所见,右侧有一个空白区域。为什么?是图像对于这个屏幕来说不够大还是什么?
使用 android:background="@drawable/carbonara" 代替 android:src="@drawable/carbonara" 我没有这个问题,它显示的图像以一种相当不错的方式(可能有点水平拉伸(stretch))。
在这些情况下使用 android:background 而不是 android:src 真的很糟糕吗?
所以我真的不知道处理这种问题的正确解决方案是什么:如果 android:background 的使用不好我该怎么办?我是否需要创建具有不同尺寸图像的不同版本并将其放在 /res/ 文件夹的特定路径中?或者是什么?我有点“困惑”。
最佳答案
Is it really so horrible use android:background instead android:src for these situations?
它与 background
和 rsc
属性无关。 Android 可在提供不同屏幕尺寸和密度 (dpi) 的各种设备上运行。您不能为 Nexus 5
和 Nexus S
使用相同的图像。
解决方法是:
您必须根据屏幕尺寸和 dpi
一组六个广义密度:
-ldpi(低)~120dpi
-mdpi(中等)~160dpi
-hdpi(高)~240dpi Nexus S
-xhdpi(超高)~320dpi Moto G
-xxhdpi(超高)~480dpi Nexus 5
-xxxhdpi(超高超高)~640dpi Galaxy
S6
和 S7
关于java - 将此图像(具有正确尺寸)插入我的 Android 项目的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037044/