EditText застревает после анимации и возвращается назад при прокрутке ......? - PullRequest
8 голосов
/ 19 октября 2011

Я сталкиваюсь с довольно интересной, но досадной ошибкой, в моей линейной компоновке я скрыл другую линейную компоновку, используя отступ в минусе, и когда пользователь выбирает тип из списка, я выводил макет на передний план с помощью 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 Ответ

24 голосов
/ 21 октября 2011

Проблема здесь заключалась в том, что при применении slider.setFillAfter(true); код анимирует изображение видов, но не фактические виды, поэтому, когда я вижу их после скольжения вниз анимации, они застряли (кнопка EditText и кнопка сохранения) застряли, или вы можете сказать мертвым прислушиваясь к их событиям, потому что за макетом находились настоящие виды, а спереди было только их изображение

Решение, которое я нашел для этой проблемы, заключается в применении следующего кода:

slider.setFillAfter(false);
slider.setFillBefore(false);
// OR you can directly write
slider.setFillEnabled(false);

А затем показать фактические виды на новом месте, настроив прослушиватель анимации и используя следующий метод:

public void onAnimationEnd(Animation a)

Размещение представлений в новой позиции в конце анимации с использованием вышеуказанного метода. И здесь все еще возникает другая проблема с миганием, которая возникает из-за проблемы в методе прослушивания андроидной анимации, которая заключается в том, что он вызывается до того, как анимация фактически заканчивается и вызывает эффект мигания, хитрое решение этого заключается в размещении следующей строки кода в первой строке public void onAnimationEnd(Animation a) метод.

// in my case animation applied to notes_editor so the code will be 
notes_editor.clearAnimation();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...