我有一个带有#34;搜索栏的#Relative; (EditText)和它下面的ListView:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/etSearch"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:inputType="text" >
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="0dp"
android:clipToPadding="false"
android:listSelector="@drawable/listview_selector" >
</ListView>
</LinearLayout>
用户&#34;搜索&#34;我希望EditText在屏幕外动画,ListView推送到顶部。我把我需要的非常粗略的GIF放在一起:
有没有人知道如何才能做到这一点?感谢
更新
我发现了如何使EditText在屏幕上生成动画:
slide_out_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="600"/>
</set>
然后在EditText上使用它,如下所示:
mSlideOutTop = AnimationUtils.loadAnimation(this, R.anim.slide_out_top);
et.startAnimation(mSlideOutTop);
但是ListView保持在当前高度。我想要的是ListView在EditText动画时扩展到顶部。
答案 0 :(得分:1)
您可以将TranslateAnimation添加到ViewGroup(适用于LinearLayout),y轴移动距离是editText视图的高度。然后在需要时触发此动画。 (更新:只是想到这种方式可能会在底部创建一个空白栏,坏主意)
我有另一个棘手的想法。
在ListView中设置EditText视图,位置为0,然后只需调用smoothScrollToPostion(1)方法进行滚动。 看到这可能对你有帮助 smoothScrollToPositionFromTop() is not always working like it should