避免EditText消耗点击事件

通常只需将focusablefocusableInTouch + clickable为false即可。 但是在这里它不起作用。

我希望父LinearLayout也消耗EditText上的点击,但它不工作…

 <LinearLayout android:id="@+id/llText" android:layout_width="0dp" android:layout_weight="1" android:background="?attr/selectableItemBackground" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/tvText" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingRight="5dp" android:text="@null" /> <EditText android:id="@+id/etText" android:inputType="none" android:gravity="center_horizontal" android:focusable="false" android:focusableInTouchMode="false" android:clickable="false" android:layout_width="wrap_content" android:ems="4" android:layout_gravity="center_vertical" android:layout_height="wrap_content" /> </LinearLayout> 

我试过editable=falseinputType=none但它不起作用。 为什么不? EditText消耗点击,不把它交给它的父母。

编辑

我将onClickListener设置为LinearLayout ,如果直接按下EditText ,则不起作用…

Solutions Collecting From Web of "避免EditText消耗点击事件"

晚了,但也许别人需要这个信息。 focusableInTouch +可点击为false后,将其添加到您的Java代码中:

  editText.setMovementMethod(null); editText.setKeyListener(null); 

不要忘记保存这些值以便以后恢复:

  mMovementMethod = mEditText.getMovementMethod(); mKeyListener = mEditText.getKeyListener(); 

你应该使用ViewGroup.onInterceptTouchEvent(MotionEvent)

这种方法是拦截所有的触摸屏幕动作事件