有时,您希望将一些占位符仅显示在IDE上的布局文件中。
例如,您可以使用:
<ImageView tools:src="@tools:sample/avatars" ... />
在预览中得到这个:
此类文件不是您构建应用时获得的APK的一部分,因此仅用于开发是安全的。
这就是我从here得知的:
使用3.0中的示例数据,您现在可以拥有占位符图像 不是编译的apk的一部分。你只需要一个samplesata目录 您的项目包含一个包含您想要的所有图像的子目录 用作占位符。你可以从“工具”中引用这些图像 属性。此外,有预定义的股票图像 @ sample / avatars或@ sample / background / scenic
我找不到如何在项目中添加更多这样的图像(这样它们只会在IDE中使用,而不是APK的一部分),如果有办法放置其他资源,除了图像。
实际上我找不到此功能的文档。
我试图将图像放在“res / sampledata”上并尝试“res / sample”,但在两种情况下都无法达到它。
答案 0 :(得分:19)
甚至这个功能的名称是什么?
官方消息来源未经证实,但它可能被称为&#34;样本数据&#34;。
如何将图像文件放入项目中,并以此方式将其用作占位符?在哪个文件夹?
与图像,字体等资源不同。示例数据不会进入/res/
(它们不会随应用程序一起编译。因此,通过将它们完全分开来过滤它们可能更容易目录)。他们进入/app/sampledata/
,例如:/app/sampledata/image.png
。
您可以通过右键点击应用创建samplesata文件夹并执行New > Sample Data directory
:
然后您可以使用@sample/
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
tools:src="@sample/test.png" />
虽然这没有给出任何错误,但遗憾的是这个功能现在似乎有问题,因为图像没有出现在预览中,无论它们是否放在子目录中(尝试过png,jpeg,jpg,xml)
有趣的是,将单个图像放在子目录中并引用该子目录而不是特定图像似乎有效:
此
的结构结合这些参考资料
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@sample/image">
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
tools:src="@sample/avatar" />
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
tools:src="@sample/jpeg" />
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
tools:src="@sample/vector" />
</LinearLayout>
制作此预览。请注意我是如何利用tools:background
将布局背景设置为示例图像的。
是否可以添加更多图像以便这种方式使用?
是的,只需将它们添加到文件夹即可。
是否可以添加其他资源?布局?字符串?
它似乎也不支持。如果您尝试定义其他类型的资源,则由于无法识别关键字而导致一堆语法错误,或者您无法使用tools:src="@sample/
表示法引用它们。
此新功能是否有更多功能?
此时不确定。
答案 1 :(得分:4)
在我这边,我尝试使用图片文件作为使用tools:src="..."
的Imageview的占位符:我确实将我的PNG文件放在sampledata
子目录中,但它不会显示或显示为破碎的图像。
经过一些小小的尝试后,我找到了解决问题的方法:
sampledata
drawable
子目录
image.png
- &gt; image_drawable.png
只有这样,占位符出现了。
您可以根据需要从drawable
创建子目录,以保持样本图像的有序性,但重要的是drawable
仍然是父目录。
我没有任何文件或消息来支持我,但我认为它对同样情况下的其他人有用。
答案 2 :(得分:1)
我想您正是在我之前回答过的人才能得到其他问题的答案,但是我可以为您提供针对此问题的解决方法
是否可以添加更多图像以这种方式使用?
我已经面对这个问题很长时间了,并且找到了解决方法。
我的问题是,如果您不知道,我不能在placeHolderImage
中使用SimpleDraweeView
,而ImageView
是Facebook Fresco库的一部分。但是由于SimpleDraweeView
并不像SimpleDraweeView
那样复杂,并且由于变通方法适用于ImageView
,所以即使我没有尝试使用 {
"data": [
{
"image": "@drawable/ic_jam_jar"
},
{
"image": "@drawable/ic_rice_bag"
},
{
"image": "@drawable/store_avatar"
},
{
"image": "@drawable/exclamation_icon"
}
]
}
,它也可能当然也可以使用它。
这是解决方案。
您只需要在sampledata文件夹中创建一个json文件,但是这一次,您必须这样做。
drawable
如您所见,我使用了image
资源的引用来代替RecyclerView
键的值。就我而言,它是可行的。您在这里得到的是一系列图像资源,您可以在<androidx.recyclerview.widget.RecyclerView
android:id="@+id/product_desc_rec_view"
android:layout_width="match_parent"
android:layout_height="350dp"
tools:itemCount="6"
app:spanCount="6"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/product_desc_item"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
项中使用这些图像资源,以在Android Studio的设计视图中进行预览。
我的RecyclerView代码如下
itemCount
请记住不要跳过我使用的任何其他标签,因为如果您错过任何标签,它可能不会在预览中产生所需的输出。您可以根据对使用的图像数量的要求自定义orientation
属性值。
另外,根据您的使用情况,vertical
可能是horizontal
或tools:src="@sample/your_json_file.json/data/image
。
您只需在recyclerview项目xml文件的ImageView
中使用ax
即可在其中加载示例图像。
尝试一下,让我知道这是否适合您的情况。
答案 3 :(得分:0)
tools:src =“ @ tools:sample / avatars [5]”
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
tools:src="@tools:sample/avatars[5]"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>