So, my problem is that OnClickListener doesn’t work when I set android:clickable="true" into my class.
This is MyClass xml code:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:clickable="true">
...
...
</RelativeLayout>
MyClass.java:
public class MyClass extends RelativeLayout implements OnClickListener {
public MyClass(Context context) {
super(context);
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.book_item, this);
setOnClickListener(this);
}
public void onClick(View v) {
Log.v("TAG", "Hello");
}
...
...
}
It works fine when I set android:clickable to false. What do I wrong?
Setting an
OnClickListenerwill automatically set the clickable property to true. The code you are showing is confusing though. My understanding is that yourMyClassview is the parent of theRelativeLayoutshown in the XML file.If so, the child
RelativeLayoutwill get the touch events first (since it’s clickable) but won’t do anything with them since it doesn’t have a click listener.Just remove
clickable=truefrom your XML.