我对这个有点不知所措,我有一个可以绘制的九个补丁(参见附件),它在draw9Patch工具中工作,没有坏补丁,在ldpi,mdpi的应用程序初始加载时工作正常,hdpi 1.6 - 2.3.3。
但是在每个屏幕尺寸上,如果我转到另一个活动,然后回到包含按钮的原始屏幕,其中九个补丁可绘制为背景,图像在顶部被裁剪(看起来好像它发生在可重复区域)。
我已经通过布局改变了任何九个补丁drawable用于确保它不是一个流氓九补丁引起其余的问题。我确保每个密度像素屏幕都有自己的资源集,我也要尝试将按钮的xml状态选择器移动到每个相应的可绘制文件夹中。
令人沮丧的是,即使九个补丁绘制不正确,旋转屏幕似乎也解决了问题,只有当我从一个新活动转回问题活动时,九个补丁才有50%的时间。
Drawable是:
结果图像的左侧部分如下(注意没有圆边):
如果您实际放大渲染的图像,它似乎将九个色块的顶部(缩放像素上方)与下方的可绘制区域重叠(放大并看到圆角)。
按钮的布局没有什么异常:
<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”
我不确定导致这种行为的原因,但我认为它会导致某种形式的缓存或一些优化引入这种间歇性错误。
答案 0 :(得分:1)
我的问题是在状态列表选择器中使用以下布尔参数:
android:constantSize="true"
android:dither="false"
android:variablePadding="false"
我不确定导致这种行为的原因,但我认为它会导致某种形式的缓存或一些优化引入这种间歇性错误。