通常将focusable
,focusableInTouch
+ 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=false
和inputType=none
,但它不起作用。为什么不? EditText
会消耗点击,而不会将其移交给它的父级。
修改
我正在为onClickListener
设置LinearLayout
,如果我直接按EditText
...
答案 0 :(得分:28)
迟到了,但也许其他人需要这些信息。 将focusable设置为focusableInTouch + clickable为false后,将其添加到您的java代码中:
editText.setMovementMethod(null);
editText.setKeyListener(null);
不要忘记保存这些值以便以后恢复它们:
mMovementMethod = mEditText.getMovementMethod();
mKeyListener = mEditText.getKeyListener();
答案 1 :(得分:0)
您应该使用ViewGroup.onInterceptTouchEvent(MotionEvent)
此方法是拦截所有触摸屏动作事件