Android按钮状态文件

Android按钮状态文件,android,state,drawable,Android,State,Drawable,文档说把按钮的XML状态文件放在drawable文件夹中——至少三个文件夹中的哪一个?!将它放在res/drawable中会产生一个不同步的文件系统错误,将它放在每个drawable-*dpi中,*是l,m,h也是一个错误。我建议使用drawable nodpi,因为它可以工作 然而,当需要时,这在文档中并不明显 如何使琐碎的事情变得复杂?使其不明确。res/drawable是ok和默认值 当您通过命令行或文件夹等方式将文件放入IDE时,fs可能来自IDE。IDE通常试图记住文件的状态,并以这种

文档说把按钮的XML状态文件放在drawable文件夹中——至少三个文件夹中的哪一个?!将它放在res/drawable中会产生一个不同步的文件系统错误,将它放在每个drawable-*dpi中,*是l,m,h也是一个错误。

我建议使用drawable nodpi,因为它可以工作

然而,当需要时,这在文档中并不明显


如何使琐碎的事情变得复杂?使其不明确。

res/drawable是ok和默认值

当您通过命令行或文件夹等方式将文件放入IDE时,fs可能来自IDE。IDE通常试图记住文件的状态,并以这种方式报告外部更改。尝试在IDE中发出刷新命令

res/drawable是一种回退,如果您没有在res/drawable-*dpi中提供更具体的图像,或者也没有提供一些方向对应的图像,则会采取这种回退

看一下文档:

drawable nodpi是一个特殊的目录,用于存放您不希望缩放的文件,这对于按钮来说毫无意义,因为您希望按钮根据屏幕大小/dpi进行缩放。

您应该将res/drawable用于XML状态列表drawable。如果出现文件系统不同步错误,只需刷新Eclipse项目,在项目窗格中选择它并点击F5

XML状态列表在大多数情况下不是独立于DPI的。但是,它们的内容不会在不同的DPI环境中更改。基本上,这意味着,如果您从状态列表中引用一个名为@drawable/btn_pressed的原始可绘制文件,Android将根据环境drawable-*dpi/btn_pressed.png为该可绘制文件查找适当的文件


正如您所看到的,尽管LDPI、MDPI和HDPI上的状态列表相同,但其中引用的可绘图项可能会发生变化。

My bad,没有得到XML部分。我会查的。据我所知,你可以删除这三个drawable-*dpi文件夹,只使用一个drawable。@MEGA:不用担心。我建议将可绘制的nodpi用于XML文件。我讨厌那些模棱两可的文件。在我看来,你提出了一个很好的问题。我在他们的文档中没有找到一个很好的答案,它还没有更新,但他们仍然使用drawable作为参考。给他们一些时间更新。这是个糟糕的答案。此外,在安卓系统问题的评论中,在苹果上写Rock会让你看起来。。。愚蠢。-nodpi是一个具有特殊含义的特殊限定符。另一个示例:级别列表一个可绘制表,它管理多个备用可绘制表,每个可绘制表都指定了一个最大数值。使用setLevel设置可绘制资源的级别值将加载级别列表中的可绘制资源,该列表中的android:maxLevel值大于或等于传递给该方法的值。但是可以有多个maxLevel大于传递值的可绘制资源!我发现这种模糊性非常没有帮助。很可能它选择了maxLevel最低值大于传递给setLevel的值的值。如果有多个具有相同的maxLevel,它可能会选择XML中的第一个,但您可能不应该这样做。而且,您可以非常轻松地测试它。是的,众所周知,Android文档并没有达到他们认可的标准,他们正在努力工作。再说一次,抨击或摇滚苹果粉丝主义也没有用。@Felix:可能有,是的。谢谢你的帖子。因为文件是XML文件,所以缩放是不相关的。通过引入按钮图像,我分别处理了按钮缩放。将选择器XML放在-nodpi中没有害处。。。。。。。。。。。。。?你能举例说明一下,如果不在这里,你什么时候会使用-nodpi的特殊含义吗?啊,那你就部分误解了。我会将xml放入res/drawable/中,因为这是回退目录,也就是说,如果没有提供任何其他内容,系统默认会在这里查看。谢谢。我再试一次。我提出这个问题的最初原因不是Eclipse的文件系统错误,而是当我将drawable放在res/drawable中时,Java完全忽略了它。出于某种原因。