是否有任何方法使线性布局的孩子不能点击android



我有一个linearyLayout有几个linearlayout和一些视图。

我想让整个布局不可点击

这是linearlayout的第一部分

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="@drawable/selector_timetable_row"
   android:orientation="vertical">

我首先做了膨胀

View view = layoutInflater.inflate(~~, above layout);

And I did

 view.setClickable(false);

,但它仍然是可点击的当我触摸布局时,布局的监听器仍然会触发

你可以用自定义视图禁用触摸事件传播,如下所示:

public class CustomLinearLayout extends LinearLayout {
    public CustomLinearLayout(Context context) {
        super(context);
    }
    public CustomLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return false;
    }
}

像这样使用:

<{Here is package name}.CustomLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="@drawable/selector_timetable_row"
   android:orientation="vertical">

最新更新