我的应用程序基于选项卡式布局,其中每个选项卡都分配了一个 FragmentActivity。
其中一项活动具有以下布局:
<FrameLayout
android:id="@+id/filialenView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:layout_height="wrap_content" android:id="@+id/filialList"
android:layout_width="fill_parent"></ListView>
</FrameLayout>
切换到该选项卡时,会创建并显示一个列表。
如果选择了列表项,则会创建一个 Fragment 并显示在列表顶部:
Filiale fragment = new Filiale();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.filialenView, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Fragment Filiale的布局“filial_detail.xml”看起来像
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
... content...
</LinearLayout>
并像这样在 onCreateView 中膨胀
View curView = inflater.inflate(R.layout.filial_detail, container, false);
一切都按预期工作,除了切换到 Fragment 后,不再可见的列表似乎保持输入焦点。如果我在某个“空白”区域触摸屏幕,片段后面的隐藏列表项就会触发。此外,如果我滑动,我可以从 LogCat 输出中看到列表滚动。
根据我对 FrameLayout 的理解,这样堆叠视图应该没问题。
那个代码有什么问题?
由于还没有答案或评论,一个更普遍的问题:
是否有任何已知的情况,背景中的视图应该接收输入,或者在任何情况下都是错误的行为?