九个补丁抽屉被剪裁

时间:2011-04-07 14:28:59

标签: android drawable

我对这个有点不知所措,我有一个可以绘制的九个补丁(参见附件),它在draw9Patch工具中工作,没有坏补丁,在ldpi,mdpi的应用程序初始加载时工作正常,hdpi 1.6 - 2.3.3。

但是在每个屏幕尺寸上,如果我转到另一个活动,然后回到包含按钮的原始屏幕,其中九个补丁可绘制为背景,图像在顶部被裁剪(看起来好像它发生在可重复区域)。

我已经通过布局改变了任何九个补丁drawable用于确保它不是一个流氓九补丁引起其余的问题。我确保每个密度像素屏幕都有自己的资源集,我也要尝试将按钮的xml状态选择器移动到每个相应的可绘制文件夹中。

令人沮丧的是,即使九个补丁绘制不正确,旋转屏幕似乎也解决了问题,只有当我从一个新活动转回问题活动时,九个补丁才有50%的时间。

Drawable是:

Problem Nine Patch

结果图像的左侧部分如下(注意没有圆边):

Rendered problem nine patch

如果您实际放大渲染的图像,它似乎将九个色块的顶部(缩放像素上方)与下方的可绘制区域重叠(放大并看到圆角)。

按钮的布局没有什么异常:

<Button
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:text="@string/some_text"></Button>

我可以将layout_height设置为固定高度(即50dp),这似乎可以阻止九个补丁本身崩溃/剪裁。

如果有任何想法可以解决问题,请告诉我。

干杯, 马特

解决方案:

我的问题是在状态列表选择器中使用以下布尔参数:

机器人:constantSize = “真” 机器人:抖动=“假” android:variablePadding =“false”

我不确定导致这种行为的原因,但我认为它会导致某种形式的缓存或一些优化引入这种间歇性错误。

1 个答案:

答案 0 :(得分:1)

我的问题是在状态列表选择器中使用以下布尔参数:

android:constantSize="true" 
android:dither="false" 
android:variablePadding="false"

我不确定导致这种行为的原因,但我认为它会导致某种形式的缓存或一些优化引入这种间歇性错误。