文件夹“drawable”和文件“drawable.xml”之间有什么不同?

时间:2013-08-20 08:32:35

标签: android

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

但是一个使用border_ui.xml文件夹res \ drawable,另一个使用文件drawable.xml找到文件夹res \ values。

有什么不同?谢谢!

此外,如果我将文件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>

border_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>

drawable.xml

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

4 个答案:

答案 0 :(得分:1)

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

由于您的drawable是一个资源,它应该在values文件夹而不是drawable文件夹中。

答案 1 :(得分:1)

差异是一,边界,涉及一个可绘制实体的形状。另一个是值资源,它引用了一个color,它可以作为drawable使用,如注释here所示 - 就像so =&gt;

  

注意:颜色资源也可以用作XML中的drawable。对于   例如,在创建状态列表drawable时,您可以引用一个   android:drawable属性的颜色资源   (机器人:抽拉= “@色/绿色”)。

我认为有问题的背景看起来像this。 (#f00表示网页安全色)

修改 Please see this article about color drawables

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

最后一句话:
你问为什么他们在不同的地方,为什么你不能只重命名并将其移动到你选择的另一个文件夹中 - 这两个文件都得到了回答。我相信如果您期望将文件移动到drawable文件夹的解决方案,那么另一个问题就是这样。请考虑提出或接受提供信息的答案。

答案 2 :(得分:1)

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

  

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

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

答案 3 :(得分:0)

实际上,drawable.xml文件是一个包含资源的文件,但不仅仅是drawables。

因此,如果您想将其移至文件夹drawable并将其重命名为my.xml,则可以。您应该删除<resources>&amp; </resources>代码,它应该有用。