最近开发,遇到一个问题,就是如果EditText只作为显示,不需要编辑文本,但需要点击该布局可以执行其他事件,就会冲突,EditText依然处于文本编辑状态;
如:
如:有5个EditText,最后一个只需要显示,不需要点击编辑文本,只需要点击该布局跳转到日历选择界面:
思路如下:
监听EditText的父布局LinearLayout,,但是EditText还是优先响应,就算设置了
edt_birthday.setClickable(false);
edt_birthday.setFocusable(false);
那么也就是没响应而已;
继续摸索:
突然想到可以有FrameLayout:
<LinearLayout
android:id="@+id/ll_birthday"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/white"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/text_16_444444"
android:text="生日"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/edt_birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.TextView"
android:background="@null"
android:hint="请选择"
android:textColor="@color/font_444444"
android:textSize="16dp"
android:layout_marginLeft="30dp"
android:drawableRight="@drawable/icon_right"
android:editable="false"
android:maxLines="1"
android:layout_gravity="center_vertical"
/>
<View
android:id="@+id/view_birthday"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/background_transparent"
/>
</FrameLayout> </LinearLayout>
关键是EditText上面覆盖一个透明的View,那么该View就会优先获得点击响应事件。