【问题标题】:Nine Patch Drawable Being Clipped九个 Patch Drawable 被剪裁
【发布时间】:2011-04-07 14:28:58
【问题描述】:

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

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

我已经完成了布局,更改了任何九个补丁可绘制用于确保它不是一个流氓九个补丁导致其余问题的问题。我已经确保每个密度像素屏幕都有自己的一组资源,并且我将尝试将按钮的 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),这似乎可以阻止九个补丁自身折叠/剪切。

如果有人对可能出现的问题有任何想法,请告诉我。

干杯, 马特

解决方案:

我的问题与状态列表选择器中的以下布尔参数有关:

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

我不确定是什么导致了这种行为,但我认为它会导致某种形式的缓存或某种优化,从而引入了这个间歇性错误。

【问题讨论】:

  • 一个临时修复似乎是设置一个固定的高度或填充,不允许九个补丁塌陷,但我的印象是 wrap-content 并没有导致这种“减少”九个补丁中的行为
  • 垂直拉伸区域变大怎么样?它将允许更短的按钮而不会完全弄乱渐变。 (剪辑是我所期望的,但不是它明显的随机性。有什么想法吗?)
  • 我才意识到它是什么(见帖子末尾的解决方案)
  • @GauntFace:请添加您的解决方案作为答案。

标签: android drawable


【解决方案1】:

我的问题与状态列表选择器中的以下布尔参数有关:

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

我不确定是什么导致了这种行为,但我认为它会导致某种形式的缓存或某种优化,从而引入了这个间歇性错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2013-07-06
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多