Versuchen Sie, einen Onclick-Listener arbeiten auf einem linearen Layout zu erhalten, aber seine nie aufgerufen :(. Habe clickable und focsuable (beide Modi) aktiviert und kann den Click-Listener immer noch nicht zum Reagieren bringen. Plattform-Details: Android 3.0. Jede Hilfe? Code unten
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_items_button"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingTop="@dimen/gen_margin_xsmall"
android:paddingBottom="@dimen/gen_margin_xsmall"
android:background="@drawable/rule_bg_menu_button"
android:clickable="true"
android:focusableInTouchMode="true"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/menu_items"
android:tag="image"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="text"
android:text="@string/menu_items_icon_txt"
style="@style/textDisplay.mediumLarge"
/>
</LinearLayout>
und im Code zum Hinzufügen des Ereignis-Listeners
_itemsButton = (LinearLayout) menu.findViewById(R.id.menu_items_button);
final Intent itemsIntent = new Intent(this, ItemsActivity.class);
_itemsButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(itemsIntent); //Never called!
}
}
);
Der Grund, warum ich dies tue und nicht mit einem Bild-Button stattdessen ist, weil der Hintergrund der "Schaltfläche" Zustand basiert (Farbverlauf ändert), sondern auch das Bild und um die beiden auf Klick / auf Fokus zu kombinieren, ich verwendet eine linearlayout, die ein ImageView in sich hat irgendwelche Vorschläge, warum der clickListener nicht auf die linearLayout funktioniert?
thx
0 Stimmen
Sehen Sie, wie sich der Status ändert, wenn Sie auf das Layout klicken?
0 Stimmen
Ja, der Zustand hat sich geändert, die Hintergrundfarbe hat sich geändert, die in der Zustandsdarstellung definiert ist
0 Stimmen
@pzulw bekam es richtig, die imageview (innerhalb der linearlayout) ist immer der Klick.. vielleicht sollte ich es "unklickbar" oder propagieren den Klick auf seine Eltern irgendwie.
0 Stimmen
Das ist seltsam, ein
ImageView
soll standardmäßig keine Klicks verarbeiten. Was passiert, wenn Sie auf dasTextView
? Standardmäßig sollte der Klick durchgehen (gerade ausprobiert mit demImageView
und hier, API 8, funktioniert es so) EDIT: vielleicht macht das Setzen eines statelistdrawable als Bild es klickbar? ich werde es versuchen0 Stimmen
Das Problem bei diesem Ansatz ist, dass diese Effekte verloren gehen, wenn das LinearLayout z. B. einen Hintergrund hatte, der sich je nach gedrücktem Zustand änderte usw. Manchmal hilft es, die Unteransichten nicht auf Klick-Ereignisse reagieren zu lassen, aber nicht immer (imageView.setClickable(false), etc.).