Ho un ImageButton e un TextView avvolto in un LinearLayout come questo:eventi Cattura LinearLayout onClick con ImageButton suo interno
<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_weight="20" android:gravity="center"
android:clickable="true" android:id="@+id/action_showhide">
<ImageButton android:id="@+id/test"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_toggle_hide_states" android:background="@null"></ImageButton>
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/txtHide"
android:textColor="@drawable/orange" android:textStyle="bold"></TextView>
</LinearLayout>
L'ImageButton è supportato da una drawable personalizzato per il normale, concentrato e stati premuti. Vorrei consentire all'utente di fare clic in qualsiasi punto del LinearLayout per attivare un evento OnClick. Il codice seguente mostra il set up per l'OnClickListener:
final LinearLayout actionHide = (LinearLayout) findViewById(R.id.action_showhide);
actionHide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(AppAdvocate.TAG, "Event caught");
}
});
Il codice funziona quando l'utente fa clic in qualsiasi punto della TextView ma quando l'utente fa clic sul ImageButton l'evento non fa bolla fino al LinearLayout. Non sto definendo un onClickListener per il pulsante. Voglio che il drawable del mio ImageButton cambi, quindi non voglio impostarlo su clickable = false. C'è un modo per ribaltare l'evento?
Grazie Mayra, questo funziona. In che modo è necessario collegare in cascata l'evento onClick di LinearLayout a ImageButton in modo che le sue modifiche modificabili vengano definite quando si preme LinearLayout? – Richard
Non sono sicuro dello stato a cui ti riferisci. Il pulsante immagine funziona come un pulsante di commutazione, in cui mostra uno stato cliccato? Dovresti essere in grado di chiamare semplicemente setChecked (checkedState) sul tuo pulsante di attivazione/disattivazione. –