1

我发现这段代码可以制作像 facebook 应用程序这样的滑动菜单。他(编写此代码)使用 FrameLayout 包含 2 个视图并使用 TranslateAnimation 显示/隐藏菜单。他习惯于setFillAfter(true)保持视线的位置。在onAnimationEnd中,他曾经view.layout(left, top, right, bottom)确保视图处于正确的位置。

我修改了这段代码以使用 3 个视图:leftView、centerView 和 rightView(在我的例子中,每个视图都是一个 LinearLayout),就像 facebook 一样,发现了一个问题:当活动显示 leftView(和 centerView 的一部分)时,如果我单击 EditText在leftView和软键盘显示,它返回到centerView。同样,当我单击 ExpandableListView 并显示 Childs 时会发生这种情况。

任何人都可以帮助我吗?这是[我的代码](https://dl.dropbox.com/u/38205395/TestErrorSlidingActivity.rar)。

提前感谢您,并为我糟糕的英语感到抱歉!

4

2 回答 2

0

尝试在清单中使用 android:windowSoftInputMode="adjustNothing" 进行活动。为我工作:)

于 2013-04-19T08:23:56.277 回答
0

您的问题是键盘重新触发了 FrameLayout 的测量/布局通道。此时,您手动调用的布局将从 FrameLayout 原始布局中替换。为避免这种情况,您有两种方法:1)不要使用 FrameLayout(定义您自己的视图组扩展或扩展 FrameLayout 覆盖有关子项的测量/布局的所有方法)2)不要在动画之后调用布局,而是尝试对您的孩子使用 setMargin(如果可能)

显然,最好的方法是第一种。

于 2013-02-19T14:47:45.887 回答