如何将新的占位符资源放入Android Studio项目("工具:示例"资源)?

and*_*per 19 android android-studio

背景

有时,您希望将一些占位符仅显示在IDE上的布局文件中.

例如,您可以使用:

<ImageView tools:src="@tools:sample/avatars" ... />
Run Code Online (Sandbox Code Playgroud)

并在预览中得到这个:

在此输入图像描述

这些文件不是构建应用程序时获得的APK的一部分,因此仅用于开发是安全的.

这是我从这里被告知的:

对于3.0中的示例数据,您现在可以拥有不属于已编译apk的占位符图像.您只需要项目中的sampledata目录,其子目录包含要用作占位符的所有图像.您可以从"工具"属性中引用这些图像.此外,还有预定义的库存图像,如@ sample/avatars或@ sample/background/scenic

问题

我找不到如何在项目中添加更多这样的图像(这样它们只会在IDE中使用,而不是APK的一部分),如果有办法放置其他资源,除了图像.

实际上我找不到这个功能的文档.

我尝试了什么

我试图将图像放在"res/sampledata"上并尝试"res/sample",但在两种情况下我都无法达到它.

问题

  1. 甚至这个功能的名称是什么?
  2. 如何将图像文件放入项目中,并以此方式将其用作占位符?在哪个文件夹?
  3. 是否可以添加更多图像以便这种方式使用?
  4. 是否可以添加其他资源?布局?字符串?
  5. 这个新功能有更多功能吗?

Tim*_*Tim 28

甚至这个功能的名称是什么?

官方消息来源未经证实,但它可能被称为"样本数据".

如何将图像文件放入项目中,并以此方式将其用作占位符?在哪个文件夹?

与图像,字体等资源不同.样本数据不会进入/res/(因此不会使用应用程序进行编译.通过将它们放在完全独立的目录中来过滤它们可能更容易).他们进去/app/sampledata/,例如:/app/sampledata/image.png.

您可以通过右键单击应用程序来创建sampledata文件夹并执行以下操作New > Sample Data directory:

在此输入图像描述

然后,您可以像这样引用它们 @sample/

<ImageView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    tools:src="@sample/test.png" />
Run Code Online (Sandbox Code Playgroud)

虽然这没有给出任何错误,但遗憾的是这个功能现在似乎有问题,因为图像没有显示在预览中,无论它们是否放在子目录中(尝试过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>
Run Code Online (Sandbox Code Playgroud)

生成此预览.请注意我如何利用tools:background将布局背景设置为示例图像.

在此输入图像描述

是否可以添加更多图像以便这种方式使用?

是的,只需将它们添加到文件夹即可.

是否可以添加其他资源?布局?字符串?

它似乎也不支持.如果您尝试定义其他类型的资源,则由于无法识别关键字而导致一堆语法错误,或者您无法使用tools:src="@sample/符号来引用它们.

这个新功能有更多功能吗?

目前不确定.

  • @CarsonH​​olzheimer仍然尝试构建。最新版本的AS解决了很多实际存在的符号问题 (2认同)

小智 7

在我这边,我尝试使用图像文件作为 Imageview 的占位符tools:src="...":我确实将 PNG 文件放在sampledata子目录中,但它要么不会显示,要么显示为损坏的图像。

经过一番摆弄后,我发现一些东西可以解决我的问题:

  • 创建一个sampledata名为:的子目录drawable
  • 将您的 png/jpg 文件放入此目录中,并在文件名后添加“_drawable”。例如:image.png->image_drawable.png

这时候占位符才出现。您可以根据drawable需要创建子目录,以保持示例图像的组织性,但重要的是仍然drawable保留父目录。

我没有任何文档或来源来支持我,但我认为它可能对处于相同情况的其他人有用。