设定:
我有一个自定义的LinearLayout,里面有一个TextView和一个ImageView(我解决问题的尝试被注释掉了):
public class MyTextView extends LinearLayout {
private final TextView textView;
private final ImageView imageView;
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(VERTICAL);
textView = new TextView(context);
imageView = new ImageView(context);
LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(layoutParams);
imageView.setImageResource(R.drawable.img);
/* imageView.setDuplicateParentStateEnabled(true);
textView.setDuplicateParentStateEnabled(true); */
/* imageView.setFocusable(false);
textView.setFocusable(false);
textView.setTextIsSelectable(false); */
addView(textView);
addView(imageView);
/* this.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
this.setClickable(true); */
}
}
我将这个自定义LinearLayout包含在更大的布局中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<my.package.MyTextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
我正在以这种方式设置onClickListener:
final MyTextView textView = (MyTextView) view.findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Code
}
});
我的问题:
如果我点击ImageView而不是TextView,onClickListener只会触发。如果我点击LinearLayout的任何部分,我希望它能够工作。
我无法理解为什么这不会起作用,即使是setDescendantFocusability设置为FOCUS_BLOCK_DESCENDANTS,并希望得到解释。非常感谢。