Android 无法禁用对带有子视图的LinearLayout的单击
我有一个XML结构: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"
<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);
}
}
}