【问题标题】:TransitionDrawable as background in TextView not working as expected作为 TextView 中的背景的 TransitionDrawable 无法按预期工作
【发布时间】:2012-05-28 04:10:57
【问题描述】:

以下问题:Animate change of view background color on Android 我正在尝试通过TransitionDrawable 资源使 TextView 在两个背景之间淡出。我的过渡 xml 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gray_bar" />
    <item android:drawable="@drawable/green_bar" />
</transition>

我尝试通过以下方式将其设置为运行时背景:

TextView answerBox = (TextView) findViewById(R.id.answerBox);
answerBox.setBackgroundResource(R.drawable.correct_transition);
TransitionDrawable transition = (TransitionDrawable) answerBox.getBackground();
transition.startTransition(1500);

结果是 textview 从这个转换而来的:

对此:

当整个灰色条应该变成绿色时。

两者都是 9-patch png 图像。这些是原件:

我的猜测是绿色条填充了灰色条内可用于文本的空间,但我不知道为什么。有什么线索吗?灰色的看起来也比它应该的大得多,但在转换之前、期间或之后不会改变大小,尽管包含的图像出现了。这可能是 9-patch 图像的问题,因为我已经测试了普通图像并且过渡效果很好。

感谢您的帮助!

【问题讨论】:

  • 我也有同样的问题...你有没有设法解决这个问题?
  • hmmm,在谷歌的示例中,他们使用 setImageDrawable 可能 setbackground 不是预期的行为,如果不是,那么您可以将 imageview 作为“背景”(使用相对布局将其放在 textview 下)和就这样运行过渡吧?
  • 不,这也不起作用。我已经切换到颜色而不是图像。我建议这是一个 9 补丁问题,因为我用普通图像测试了相同的代码并按预期工作。所以,zwebie,它使用彩色而不是 9-patch 图像,就我而言,它适用于普通(非 9-patch)图像。

标签: android android-layout android-xml


【解决方案1】:

我能够重现您所看到的问题,即绿色条没有占据灰色条的全部空间。要修复它,请使用灰色条 9-patch 并将底部和右侧的线延伸到距角落一个像素的位置。

附带说明,您的 9-patch 的另一个潜在问题是,随着内容高度的增加,您的图像会在垂直拉伸时出现视觉伪影。这是图像左侧黑条高度的结果,它决定了 9-patch 的哪个部分应该拉伸。对这 9 个补丁的进一步改进是将左侧的黑线减少到仅位于左边缘中心的单个像素。由于只有一个像素被标记为可拉伸,因此如果您的可绘制对象的高度增加,这应该会为您提供清晰的垂直边缘。

如果您包含您的布局代码,我可以帮助您解决其他尺寸问题。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2018-11-13
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2019-10-24
    • 2012-04-01
    • 1970-01-01
    • 2020-10-20
    相关资源
    最近更新 更多