【问题标题】:TransitionDrawable with nine patches - margin is wrong带有九个补丁的 TransitionDrawable - 边距错误
【发布时间】:2013-02-15 19:45:13
【问题描述】:

我有一个 TransitionDrawable。这两个状态都是九个补丁,并定义了一个内容区域。问题是利润太高了——事实上它基本上是应该的两倍。似乎是在将两个九个补丁的边距相加。

如果我将这九个补丁中的一个直接设置为背景而不使用TransitionDrawable,则边距可以正常工作,因此九个补丁绝对正确。

有人遇到过这样的问题吗?

编辑:如果我将内容区域设置为资产的完整大小并在 xml 中定义填充,则它可以工作。否则它总是会得到错误的边距。这似乎是 Android 中的一个错误,所以这似乎是唯一的解决方案,但也许有更好的方法来解决这个问题:/

【问题讨论】:

  • 你能发布你的 9 个补丁和它们所在的 xml 布局吗?看不到代码就很难调试。我以前遇到过这种情况,我的StateListDrawable 没有适当的边距,我意识到我的图像上的内容/可拉伸区域不匹配,Android 占据了共同点。
  • 这似乎是框架中的一个错误:code.google.com/p/android/issues/detail?id=48412 如果我覆盖 xml 中的填充,它可以工作,但这并不是我真正想要做的
  • 出于好奇,如果您在TransitionDrawable 的过渡中为两个项目使用相同的drawable 会发生什么?这样可以保证您使用相同大小的 9 补丁和相同大小的内容/可拉伸区域,并且 Android 做错了什么......
  • 是的,完全相同的问题。它只是将两种状态的填充相加。
  • 即使我覆盖了填充,一旦我改变状态,它也会再次添加填充。

标签: android android-layout android-ui nine-patch transitiondrawable


【解决方案1】:

是的,你是对的。确实很烦。

正如你所建议的,我使用硬编码的负填充来补偿 first_nine_patch 到目前为止的 9 补丁填充。

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/first_nine_patch" />
    <item android:drawable="@drawable/second_nine_patch"
        android:top="-7dp"
        android:right="-16dp"
        android:bottom="-8dp"
        android:left="-4dp" >
    </item>
</transition>

【讨论】:

  • 非常感谢分享这个解决方法!一旦他们在 Android 中解决了这个问题,我们将不得不再次更改它。确实很烦人..
猜你喜欢
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多