gpt4 book ai didi

android - 当 slidingdrawer 打开 listview 参数更改时

转载 作者:行者123 更新时间:2023-11-30 03:51:28 25 4
gpt4 key购买 nike

我的应用程序中有一个小动画,它的末尾更改了 ListView 的位置参数:listArr.layout(0, (int) (actionBar.getHeight() + filterTabHeight),
listArr.getWidth(), (int) (actionBar.getHeight() + listArr.getHeight() + filterTabHeight));

即它设置得比开始时低一点(它以全屏模式开始,按下按钮后,它向下滑动一点以在屏幕顶部显示其下方的内容)。

通过按下列表,我可以看到它的参数真的改变了,它的位置也真的改变了。现在,如果 SlidingDrawer 在那个时候被打开,布局会被重新排列并且列表会设置回全屏。

为什么会这样?

private void setFilterAnimationAnimation(boolean isOpenAnimation) {
TranslateAnimation verticalAnimation;
float scale = context.getResources().getDisplayMetrics().density;
filterTabHeight = FILTER_HEIGHT_IN_DP * scale;

if (isOpenAnimation) {
listArr.layout(0, (int) (actionBar.getHeight() + filterTabHeight),
listArr.getWidth(), (int) (actionBar.getHeight() + listArr.getHeight() + filterTabHeight));
verticalAnimation = new TranslateAnimation(0, 0, -filterTabHeight, 0);
} else {
listArr.layout(0, (int) (actionBar.getHeight()),
listArr.getWidth(), (int) (actionBar.getHeight() + listArr.getHeight()));
verticalAnimation = new TranslateAnimation(0, 0, filterTabHeight, 0);
}
verticalAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
verticalAnimation.setDuration(250);
animSet = new AnimationSet(false);
animSet.cancel();
animSet.reset();
animSet.setFillAfter(true);
animSet.addAnimation(verticalAnimation);
isTabOpen = !isTabOpen;
listArr.startAnimation(animSet);
}

这是 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.softtechnics.something"
android:id="@+id/coupon_list_layout"
style="@style/FillParent"
android:orientation="vertical" >

<include
android:id="@+id/filter_tab"
android:layout_width="match_parent"
android:layout_height="34dp"
android:layout_below="@+id/action_bar"
layout="@layout/filter" />

<com.softtechnics.something.gui.components.ListArr
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/action_bar" />

<com.softtechnics.something.gui.components.ActionBar
android:id="@+id/action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" />

<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />

<com.softtechnics.something.gui.components.Footer
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@id/action_bar"
android:scaleType="fitXY"
android:src="@drawable/head_bar_shadow" />

页脚是我的 SlidingDrawer。谢谢!

最佳答案

布局方法不会对 View 应用永久更改。因此,下次您的布局更新时,所有内容都会返回。更改 listView 的 LayoutParams 以应用永久更改并阅读 this .

关于android - 当 slidingdrawer 打开 listview 参数更改时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089080/

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