Ich finde nicht den Weg, um dies zu arbeiten.machen Sie eine Vordergrundansicht Click-through
Meine Anwendung hat 2 FrameLayouts mit vielen Kindansichten (man stelle ImageViews der Einfachheit halber) übereinander gestapelt vor.
Mein Problem ist, ich brauche das FrameLayout auf der Oberseite und alle seine Kinder, um Berührungen durch sie gehen zu lassen, das darunterliegende FrameLayout (und seine Kinder) zu erreichen. So etwas wie Zeiger-Ereignisse: Keines in HTML, das auf alle Bildansichten des TOP-Framelayouts angewendet wurde.
Ich habe SetClickable (False) und SetEnabled (False) sowohl auf dem FrameLayout und seinen Kindern versucht, aber wenn ich auf eine deaktivierte Kinder (zum Beispiel ein ImageView) klicken, erreicht die Berührung ein zugrunde liegendes ImageView (d Kind des unteren FrameLayout)
Der folgende Code ist mein bester Versuch, ein FrameLayout und seine untergeordneten Elemente zu deaktivieren (mSlideLayout ist das übergeordnete FrameLayout, Layer ist jedes imageview untergeordnete). Fehle ich etwas?
/** Create the layers structure into the layout */
void create_layers() {
Context context=getActivity();
mSlideLayout.removeAllViews();
for (FunqLayer layer:mLayers) {
if (layer!=null) {
View v=layer.init_internal(context, mSlideLayout); // constructs the child layer, suppose it's an ImageView
if ((v!=null) && (mIsMuteTouches)) {
v.setEnabled(false);
v.setClickable(false);
// this should obviously let touches pass through but it doesnt :(
}
}
}
if (mIsMuteTouches) {
// also do the same in the FrameLayout itself with no luck :(
mSlideLayout.setEnabled(false);
mSlideLayout.setClickable(false);
}
}