Android LinearLayout,最后添加了儿童窃取点击onClickListener

时间:2014-03-24 17:23:30

标签: java android android-linearlayout onclicklistener

设定:

我有一个自定义的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,并希望得到解释。非常感谢。

1 个答案:

答案 0 :(得分:0)

问题是在TextView上调用setMovementMethod而我没注意到。