Android 无法禁用对带有子视图的LinearLayout的单击

Android 无法禁用对带有子视图的LinearLayout的单击,android,android-linearlayout,onclicklistener,Android,Android Linearlayout,Onclicklistener,我有一个XML结构: <LinearLayout android:id="@+id/action_info" android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="0.25" android:orientation="vertical"

我有一个XML结构:

<LinearLayout
            android:id="@+id/action_info"
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="0.25"
            android:orientation="vertical"
            android:padding="@dimen/padding_activity_map_bottom_dialog_buttons"
            android:layout_marginBottom="@dimen/margin_bottom_activity_map_bottom_dialog_content"
            android:clickable="true"
            android:background="?attr/selectableItemBackground">

            <ImageView
                android:src="@drawable/ic_action_info"
                android:layout_width="@dimen/dimens_activity_map_bottom_dialog_button_image"
                android:layout_height="@dimen/dimens_activity_map_bottom_dialog_button_image"
                android:layout_gravity="center"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/label_activity_map_info"
                android:textSize="@dimen/size_activity_map_bottom_dialog_marker_actions_button_label"
                android:gravity="center"/>

        </LinearLayout>

并尝试禁用LinearLayout单击(通过设置enable=false):

private void disableEnableControls(布尔启用,视图组vg){
对于(int i=0;i

但问题依然存在,仍然是所有单击LinearLayout触发器的操作。

请删除这一行并检查您是否按预期获得输出android:clickable=“true”

请删除这一行并检查您是否按预期获得输出android:clickable=“true”

已解决更改

private void disableEnableControls(boolean enable, ViewGroup vg){
        for (int i = 0; i < vg.getChildCount(); i++){
            View child = vg.getChildAt(i);
            child.setEnabled(enable);
            child.setClickable(enable);
            if (child instanceof ViewGroup){
                disableEnableControls(enable, (ViewGroup)child);
            }
        }
    }
private void disableEnableControls(布尔启用,视图组vg){
对于(int i=0;i

private void disableEnableControls(布尔启用,视图组vg){
setEnabled(enable);//我缺少的点
对于(int i=0;i
已解决更改问题

private void disableEnableControls(boolean enable, ViewGroup vg){
        for (int i = 0; i < vg.getChildCount(); i++){
            View child = vg.getChildAt(i);
            child.setEnabled(enable);
            child.setClickable(enable);
            if (child instanceof ViewGroup){
                disableEnableControls(enable, (ViewGroup)child);
            }
        }
    }
private void disableEnableControls(布尔启用,视图组vg){
对于(int i=0;i

private void disableEnableControls(布尔启用,视图组vg){
setEnabled(enable);//我缺少的点
对于(int i=0;i
private void disableEnableControls(boolean enable, ViewGroup vg){
        vg.setEnabled(enable); // the point that I was missing
        for (int i = 0; i < vg.getChildCount(); i++){
            View child = vg.getChildAt(i);
            child.setEnabled(enable);
            child.setClickable(enable);
            if (child instanceof ViewGroup){
                disableEnableControls(enable, (ViewGroup)child);
            }
        }
    }