3

在activity_main.xml 中有两行代码android:background="@drawable/border_ui"android:background="@drawable/my",

但一个使用位于文件夹 res\drawable 的border_ui.xml,另一个使用位于文件夹 res\values 的文件 drawable.xml。

有什么不同?谢谢!

此外,如果我将文件 drawable.xml 删除到文件夹 res\drawable 并将其重命名为 my.xml,则会发生错误。

activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:background="@drawable/border_ui"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" 
        android:background="@drawable/my"
        />

</RelativeLayout>

边框_ui.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" >   
    <stroke android:width="1dp" android:color="#000000" />     
    <solid android:color="#ffffff" />
    <padding
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

</shape>

可绘制的.xml

<resources>
  <drawable name="my">#f00</drawable>
</resources>
4

4 回答 4

1

不同之处在于,边框涉及一个可绘制实体的形状。另一个是值资源,它引用了一种可以作为可绘制对象接受的颜色,如此处的注释所示- 就像这样 =>

注意:颜色资源也可以用作 XML 中的可绘制对象。例如,在创建状态列表可绘制对象时,您可以为 android:drawable 属性 (android:drawable="@color/green") 引用颜色资源。

我想有问题的背景看起来像这样。(#f00 代表网络安全颜色)

编辑: 请参阅这篇关于彩色绘图的文章的文章。

它所说的以及Android Drawable Resources显示的内容是,用于特定目的的文件(如所示的任何可绘制类型)都需要某些标签作为根。只是按照建议删除<resource>标签是行不通的。如果您想将可绘制颜色强制放入另一个资源文件夹而不是它所属的位置(值),我真的不明白为什么,那么您将不得不破解它。

最后一句话:
你问他们为什么在不同的地方,为什么你不能重命名并将它移动到你选择的另一个文件夹中——这两个问题都得到了回答。我相信,如果您期待将文件移动到文件drawable夹的解决方案,那么另一个问题就是这样问的。请考虑支持或接受内容丰富的答案。

于 2013-08-20T08:49:34.183 回答
1

您可以更改文件的名称,但不要将其移动到可绘制文件夹。将其保留在当前位置,它应该可以正常工作。drawable.xml 不是关键字。但是你不能拥有这个文件,它包含可绘制文件夹中的资源列表。

由于您的 drawable 是一种资源,因此它应该位于 values 文件夹而不是 drawable 文件夹中。

于 2013-08-20T08:43:44.177 回答
1

它来自关于 String 的 android 文档,但它可以解释:

注意:字符串是使用 name 属性中提供的值(不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中的一个元素下将字符串资源与其他简单资源结合起来。

drawable 的语法是没有元素但常规的 xml 文件

于 2013-08-20T08:51:34.927 回答
0

实际上,该drawable.xml文件是一个包含资源的文件,而不仅仅是可绘制的。

所以,如果你想将它移动到文件夹drawable并重命名它my.xml,没关系。您应该只删除<resources>&</resources>标签,它应该可以工作。

于 2013-08-20T08:39:33.097 回答