我有一个非常简单的布局——它有两个视图:一个列表视图和一个完全覆盖的“覆盖”视图;下面是一个例子:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listView"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="360dp"
android:layout_height="270dp"
android:id="@+id/imageView"
android:layout_centerInParent="true"
android:background="#8888"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is some text"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
</RelativeLayout>
我使覆盖视图比我真正的视图更简单一些,没有需要触摸的视图(也就是说,没有按钮或可滚动区域)——一些 LinearLayout 散布在各处)。我想做的是不仅忽略布局中的触摸,而且忽略布局的所有子视图中的触摸。我想接收触摸的唯一视图是 ListView。
我首先以简单的方式实现了它——与上面非常相似——并且触摸永远不会到达底层的 ListView(当我拖动时它不会滚动)。
我真的不知道如何为 Android 做到这一点。另一个 SO 答案(https://stackoverflow.com/a/9462091/875486)指向使用一些标志(特别是 FLAG_NOT_TOUCHABLE 和 FLAG_NOT_FOCUSABLE),但我不太清楚如何使用这些标志。