Auf Click-Ereignis für Eltern und Kind anzeigen

Ich habe eine RelativeLayout und ein ImageView.
Das layout ist unten angegeben -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" >

<ImageView
    android:id="@+id/ivIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher" />

</RelativeLayout>

Den Activity code -

public class MainActivity extends Activity implements OnClickListener{

private RelativeLayout rlMain;
private ImageView ivIcon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rlMain = (RelativeLayout) findViewById(R.id.rlMain);
    ivIcon = (ImageView) findViewById(R.id.ivIcon);
    rlMain.setOnClickListener(this);
    ivIcon.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.rlMain:
        Toast.makeText(this, "Relative Layout clicked", Toast.LENGTH_SHORT).show();
        break;

    case R.id.ivIcon:
        Toast.makeText(this, "Image View clicked", Toast.LENGTH_SHORT).show();
        break;
    }

}

}

Habe ich angewendet, die auf Klick-listener für beide die RelativeLayout (parent) und die ImageView (Kind).
Beim klicken auf die relative layout - es wird behandelt, indem die relative layout klicken Sie auf handler.(Dies scheint richtig zu sein).

Während Sie auf den Imagview - Es wird behandelt, indem die Bildansicht. (Hier ist die Verwirrung).

Sollte das klicken auf die Bildansicht bekommen, behandelt, indem sowohl die übergeordnete als(relatives layout) und Kind (Bildansicht)?
Was ist die Logik, wenn nur die untergeordnete Ansicht ist der Umgang mit der klicken Sie auf?

Die RelativeLayout's onClick listner genannt werden, auch wenn Sie auf das Bild klicken.
Warum nicht entfernen Sie die .setOnClickListener von der OnCreate() Methode (sowohl für die ImageView und die RelativeLayout). Stattdessen setzen android:onClick="onClickFunction sowohl die layouts, und benennen Sie die onClick() zu onClickFunction() (Die @Override anotation als auch entfernt werden). Dies funktioniert sicher!!!
Nein, es ist nicht immer genannt . Nur das Bild anzeigen klicken-handler wird immer aufgerufen.
Es passiert so, weil die Schicht klug, ImageView ist oben.So dass Sie wollen, nennen die beiden von Ihnen?
Das wird funktionieren, egal wo Sie klicken, die ImageView ist wrap_content - und wenn es kleiner ist als die RelativeLayout Sie werden in der Lage sein, um Sie auf das layout zu zu.

InformationsquelleAutor Anukool | 2013-07-31

Schreibe einen Kommentar