本地图标在Android选项菜单中拉伸以填充菜单项,遮盖标题

4

我是一名新手,链接和图片在这里

你好,

我可能犯了一个愚蠢的错误......希望能找到其中的问题所在。

我想在我的应用程序选项菜单中使用一些标准菜单图标(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,这些图标明显是“非公共的”[链接1]。此外,我在一些地方看到过,“引用内部图形不是个好主意”[链接2]。同样地,我也不想使用星号解决方法[链接3]来允许访问私有资源。提供的解决方法是制作一个本地可用的drawable副本。
因此,我从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图像似乎与我引用的内部图像匹配:

[截图](请点击顶部链接!)

我已经仔细检查过了:),它确实在我的手机(Motorola Droid)上模糊。

我还想到,所引用的图标可能是通过xml文件获取的(例如状态列表可绘制对象),并且该xml文件以某种方式定义了如何绘制图像。我尝试使用位图元素创建一个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" />

它成功地显示了图标(我感到很自豪),但没有解决拉伸问题。我还发现了这些[链接4和链接5]页面,但它们似乎有不同的问题。也许我应该从另一个位置复制图标?我的xml文件是对的吗?请帮帮我?谢谢,Nolan。

我遇到了完全相同的问题。我还没有找到解决方案。http://stackoverflow.com/questions/3982461/why-is-the-drawable-overlapping-the-text-in-my-tabview - Falmarri
1个回答

2
如果您想让图标在所有屏幕密度下正确显示,那么您应该创建自己的drawable-mdpi、drawable-hdpi等文件夹,并将图标复制到每个文件夹中。
这样,每种密度都会使用正确尺寸的图标。有关此操作的更多详细信息,请参见支持多个屏幕大小,特别是资源限定符部分。

3
那并没有真正回答问题。可绘制对象应该拉伸以适应大小。 - Falmarri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接