Одинаковые нарисованные элементы не отображаются одинакового размера с TransitionDrawable - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь анимировать чередующиеся цвета фона для TextView, изменяя фоновые рисунки с помощью класса TransitionDrawable. Вот результат, который я получаю:

enter image description here

Проблема заключается в том, что второй чертеж меньше первого , и в результате зеленый фон всегда виден по сторонам. Мне нужен синий фон, чтобы полностью покрыть зеленый. Я просто не могу понять, почему это так.

некоторый файл макета:

<TextView
        android:id="@+id/alertCrumb"
        style="@style/Custom.TextAppearance.AppCompat.Caption"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/crumb_animated"
        android:textColor="@android:color/white"/>

crumb_animated.xml

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

    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

            <solid android:color="@android:color/holo_green_light" >
            </solid>

            <padding
                android:bottom="1dp"
                android:left="4dp"
                android:right="4dp"
                android:top="1dp" >
            </padding>

            <corners android:radius="2dp" >
            </corners>

        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

            <solid android:color="@android:color/holo_blue_dark" >
            </solid>

            <padding
                android:bottom="1dp"
                android:left="4dp"
                android:right="4dp"
                android:top="1dp" >
            </padding>

            <corners android:radius="2dp" >
            </corners>

        </shape>
    </item>
</transition>

вызов в java:

final TransitionDrawable background = (TransitionDrawable) alertCrumb.getBackground();
        background.startTransition(500);
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                background.reverseTransition(1000);
                handler.postDelayed(this, 1000);
            }
        }, 2000);
...