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?
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem clickEvent wird an der untersten Kind-element in der layout-Hierarchie. Wenn dieses element nicht über einen onClick-Verhalten wird die Veranstaltung bis zu seiner Eltern, bis der Fall gehandhabt werden soll.
Daher können Sie Sie behandeln das LinearLayout in einem einzigen block für Ihre onClick Verhalten. Wenn Sie ein anderes klickbares element im layout sicher sein, um es groß genug zu reduzieren die chance von dem Benutzer fehlt das richtige Element.
Quelle: Hat das Elternteil anklickbar machen alle Kind-element anklickbar?
InformationsquelleAutor proy31
Normalerweise in Fällen, wo das Bild angeklickt werden ist sehr klein, in der dimension der Bildansicht ist gehalten, innerhalb eines Layouts, die einige padding, dann klicken Sie auf der layout-behandelt wird. Das gibt genug Raum auf dem Bildschirm für den Benutzer, klicken Sie auf
InformationsquelleAutor pvn