android - TransitionDrawable 作为 TextView 中的背景未按预期工作

标签 android android-layout android-xml

以下问题: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 从这个转换而来:

Textview with gray_bar background 对此: Textview with green_bar background

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

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

gray_bar green_bar

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

感谢您的帮助!

最佳答案

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

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

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

关于android - TransitionDrawable 作为 TextView 中的背景未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688990/

相关文章:

安卓CDT : Possible to use ndk-build without bash (Eclipse in Windows)?

android - ViewPager 上未触发 OnLongClickListener

Android:底部导航 View - 更改所选项目的图标

android - 更改指令功能中的用户界面

android - 如何检索 firebase 数据库条目的细节?

android - 检测设备是用针锁或面部锁的指纹锁保护的吗?

android - 如何使用 Maven 为 Android 项目过滤资源?

android - Layout_anchor 等效于 ConstraintLayout

Android 2.3.4、OpenSL ES 和巨大的日志垃圾邮件,原因不明

android - 对齐android的上下文菜单