gpt4 book ai didi

android - EditText 在动画后卡住并在滚动时恢复正常......?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:34 24 4
gpt4 key购买 nike

我面临一个非常有趣但烦人的错误,在我的线性布局中,我使用负边距隐藏了另一个线性布局,当用户从列表中选择一种类型时,我使用平移动画将布局置于最前面,错误是布局来到前面有一个编辑文本,它变得死了,当我滚动时(我的主要布局被 ScrollView 包围)它变得活跃,当我停止滚动时它又变得死了......我真的无法判断为什么会发生这种情况所以伙计们请帮忙....

我还在下面粘贴了视频链接,展示了我的应用程序的这种恼人行为

http://www.dailymotion.com/video/xlskk8_android-app-edit-text-error_tech

我在 ScrollView 中的布局 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>

按钮下方的空线性布局用于动态添加 subview ,所有其他东西都正常执行其功能,只有编辑文本显示这种异常行为。

用于动画的代码如下

  public void animateEditor()
{
slider = new TranslateAnimation(0, 0, 0,180 );
slider.setDuration(1250);
slider.setFillAfter(true);
notes_list.startAnimation(slider);
notes_editor.startAnimation(slider);
}

最佳答案

这里的问题是在应用 slider.setFillAfter(true); 时,代码为 View 的图像而不是实际的 View 设置动画,这就是为什么当我在滑下动画后看到它们时(EditText 和保存按钮)卡住了,或者你可以说死了,不听他们的事件,因为实际的 View 在布局后面,而在前面,它只是他们的图像

我找到的解决该问题的方法是应用以下代码:

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

然后通过设置动画监听器并使用以下方法显示新位置的实际 View :

public void onAnimationEnd(Animation a)

使用上述方法将 View 放置到动画结束时的新位置。这里还有另一个闪烁问题,这是由于 android 动画监听器方法中的问题,它在实际动画结束之前被调用并导致闪烁效果,一个棘手的解决方案是将以下代码行放在第一行public void onAnimationEnd(Animation a) 方法。

// in my case animation applied to notes_editor so the code will be 
notes_editor.clearAnimation();

关于android - EditText 在动画后卡住并在滚动时恢复正常......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com