我是新手,所以链接和图片为here
您好,
我可能犯了一个愚蠢的错误......希望找出那是什么。
我想在我的应用程序的“选项”菜单中使用一些标准菜单图标(ic_menu_refresh等)。我想在菜单的xml文件中设置图标。我在几个地方读到我可以使用以下内容:
<item android:id="@+id/quit"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="Quit" />
在我的菜单中点击退出按钮。这很好用。但是,我还想使用其他一些图标,比如ic_menu_stop.png,它们显然是“不公开” [link1] 。另外,我在一些地方读过,“引用像这样的内部图形” [link2] 并不是一个好主意。同样,我不想使用星号解决方法 [link3] 来允许访问私有资源。提供的解决方案是制作可绘制的本地副本。
所以我将我想要的图像文件从C:\...\android-8\data\res\drawable-hdpi
复制到我项目的res\drawable
文件夹中,然后将上面的xml更改为:
<item android:id="@+id/quit"
android:icon="@drawable/ic_menu_close_clear_cancel"
android:title="Quit" />
然而,这导致图标拉伸(我相信图标被拉伸 - 而不仅仅是一个更大的(hdpi)图像文件 - 因为它有点模糊)并且要么模糊或挤出标题文本,所以我看到的只是超大,模糊的图标。当然,我也尝试从drawable-mdpi
文件夹中复制图标:使用mdpi图标不会遮挡标题,但图标略显模糊不清。
我想要一个屏幕截图,所以我切换到在我的模拟器上运行应用程序。然而,模糊不明显,本地mdpi图像似乎与我引用的内部图像匹配:
[screenshot] (点击顶部的链接!)
我已经仔细检查了:),我的手机(摩托罗拉Droid)确实很模糊。
我还想到,引用的那个可能是通过xml文件(如状态列表drawable)获取图标,并且xml文件以某种方式定义了如何绘制图像。我尝试使用位图元素制作一个,并尝试以我认为可能有帮助的方式设置几个属性:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_menu_close_clear_cancel"
android:gravity="top"
android:filter="false" />
它显示了图标(我为自己感到自豪),但没有影响拉伸问题。
我也找到了这些 [link4和link5] 页面,但它们似乎有不同的问题。
也许我应该从其他位置复制图标?我是否正确使用xml文件?帮助
谢谢,
诺兰
答案 0 :(得分:1)
如果您希望图标在所有屏幕密度中都能正确显示,那么您应该创建自己的drawable-mdpi,drawable-hdpi等文件夹并将图标复制到每个文件夹中。
这样,每个密度都将使用正确尺寸的图标。有关其工作原理的更多详细信息,请参阅supporting multiple screen sizes,尤其是有关资源限定符的部分。
答案 1 :(得分:0)