ActionBarSherlock与自定义Drawable图标具有较大的固有宽度/高度 - 显得太大

时间:2013-05-05 12:10:50

标签: android actionbarsherlock

我正在使用自定义Drawable课程为我的ActionBarSherlock提供图标。自定义DrawableSVGDrawable实际上是我自己的SVG库的一部分。我已经为这个应用程序的其他领域开发了这个库,但我发现创建SVG格式的ActionBar图标也很有用,因为它避免了生成多个图像以支持各种密度。因此,出于这个问题的目的,SVG的东西并不真正相关。所有相关的是SVGDrawable根据.svg文件的内容呈现内容,并且内在宽度/高度被视为原始.svg文档的宽度和高度。

这一切都运行得很好,除了一个小问题,SVGDrawable使用内在的宽度和高度要求draw()使用它的图像,而不是一些宽度和高度适合于ActionBarSherlockSVGDrawable的{​​{1}}返回SVG文档的原始高度(宽度相同),因此,如果原始SVD文档是300px square,那么getIntrinsicHeight()就是SVGDrawable 1}}将呈现在。

我认为ActionBarSherlock基本上希望它的图标Drawables以他们自己的内在尺寸绘制,因为在通常情况下你会使用图像资源drawables,而那些drawables已经被授权确切地说是各种密度的正确尺寸。

最初,我错误地认为SVGDrawable的setBounds()会被调用一些值,这些值表明ActionBarSherlock允许图标的大小。

对于我的情况,我能想到的唯一解决方法是添加一个像setIntrinsicDimensions(int width, int height)这样的方法,它基本上会覆盖从原始SVG文档中读取的维度。我想,在以编程方式将SVGDrawable添加到ActionBarSherlock时,我也会调用此方法并提供合适的宽度和高度,其中高度是ActionBarSherlock的高度减去一些填充。

任何更好的方法,任何人?

0 个答案:

没有答案