EditText застревает после анимации и возвращается назад при прокрутке......?
Я сталкиваюсь с довольно интересной, но раздражающей ошибкой, в моей линейной компоновке я скрыл другую линейную компоновку, используя отрицательное поле, и когда пользователь выбирает тип из списка, я переношу макет на передний план с помощью Translational Animation, ошибка заключается в том, что компоновка выходит на передний план. у меня есть редактируемый текст, который становится мертвым, и когда я прокручиваю (мой основной макет окружен видом прокрутки), он оживает, а когда я прекращаю прокрутку, он снова становится мертвым... Я действительно не смог понять, почему это происходит, поэтому, ребята, помогите, плз....
Я также вставил ссылку на видео ниже, показывающее это раздражающее поведение моего приложения
http://www.dailymotion.com/video/xlskk8_android-app-edit-text-error_tech
мой макет XML внутри прокрутки
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginTop="-110dip"
android:layout_marginBottom="5dip"
android:id="@+id/notes_editor"
android:orientation="vertical"
>
<EditText
android:id="@+id/enter_note"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="2"
android:lines="2">
</EditText>
<Button
android:id="@+id/save_note"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Save" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-10dip"
android:id="@+id/notes_list"
android:orientation="vertical"
>
</LinearLayout>
</LinearLayout>
Кнопка "Пустой линейный макет" ниже используется для динамического добавления дочерних представлений, все остальные функции выполняют свои функции должным образом, только текст редактирования показывает это ненормальное поведение.
код, используемый для анимации ниже
public void animateEditor()
{
slider = new TranslateAnimation(0, 0, 0,180 );
slider.setDuration(1250);
slider.setFillAfter(true);
notes_list.startAnimation(slider);
notes_editor.startAnimation(slider);
}
1 ответ
Проблема здесь была при применении slider.setFillAfter(true);
код анимирует изображение видов, но не фактические виды, поэтому, когда я вижу их после скольжения вниз анимации, они застряли (кнопка EditText и кнопка сохранения) застряли, или вы можете сказать "мертвые" и не прослушивать их события, потому что за макетом были настоящие представления. и спереди это было просто их изображение
Решение, которое я нашел для этой проблемы, заключается в применении следующего кода:
slider.setFillAfter(false);
slider.setFillBefore(false);
// OR you can directly write
slider.setFillEnabled(false);
А затем показать фактические виды на новом месте, установив прослушиватель анимации и используя следующий метод:
public void onAnimationEnd(Animation a)
Поместить вид на новую позицию в конце анимации, используя метод выше. И здесь все еще возникает другая проблема мигания, которая возникает из-за проблемы в методе прослушивания анимации Android, которая заключается в том, что он вызывается до того, как анимация фактически заканчивается и вызывает эффект мигания, хитрое решение которого заключается в размещении следующей строки кода в первой строке. из public void onAnimationEnd(Animation a)
метод.
// in my case animation applied to notes_editor so the code will be
notes_editor.clearAnimation();