避免EditText使用click事件

时间:2015-08-04 17:47:44

标签: android onclick android-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 ...

,它就无效

2 个答案:

答案 0 :(得分:28)

迟到了,但也许其他人需要这些信息。 将focusable设置为focusableInTouch + clickable为false后,将其添加到您的java代码中:

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

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

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

答案 1 :(得分:0)

您应该使用ViewGroup.onInterceptTouchEvent(MotionEvent)

  

此方法是拦截所有触摸屏动作事件