当嵌入EditText时,RelativeLayout onClick无法触发

时间:2013-07-17 07:54:48

标签: android user-interface event-handling

预期结果

EditText内使用RelativeLayout实施了一个搜索栏。出于某种原因,要搜索的查询不会被输入EditText直接,而是在点击搜索栏时触发WebView并加载搜索页面,用户可以在其中输入搜索查询那里。

问题

android:onClick="selectCellSearch"设置为RelativeLayout,点击EditText似乎不会触发selectCellSearch给出的onClick回调函数。

源代码

layout.xml

<!-- Start of Search Bar Cell -->
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="87dp"
    android:background="#212121"
    android:clickable="true"
    android:onClick="selectCellSearch"
    android:tag="search" >

    <EditText
        android:id="@+id/edit_text_search_id"
        android:layout_width="fill_parent"
        android:layout_height="85dp"
        android:layout_marginBottom="1dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="1dp"
        android:hint="@string/edit_text_search_id"
        android:textSize="28sp"
        android:textStyle="normal"
        android:enabled="false"
        android:inputType="none" />

</RelativeLayout>
<!-- End of Search Bar Cell -->

注释

点击搜索栏后,android:tag="search"用于生成要加载的搜索页面的网址,例如http://mywebsite.com/search

更新

selectCellSearch()现已发布在此处。

MainActivity.java

public void selectCellSearch(View view) {
    final String tag = (String) view.getTag();
    if (tag != null) {
        buttonForWebViewSlideInAnimation.performClick();
        mWebView.loadUrl(WEB_BASE_URI + tag);
    }
}

2 个答案:

答案 0 :(得分:3)

首先,不建议使用onClick的xml属性来设置onClickListener。使用setOnClickListener方法始终执行此操作。

其次,EditTest占据相对布局的所有大小,并且“超过相对”。这种情况导致RelativeLayout的onClick从未调用过。

要接收点击,您可以:

  • 您确定RelativeLayout是完全必要的吗?
  • 您可以在EditText
  • 上设置onClick
  • 覆盖RelativeLayout上的onInterceptTouchEvent或dispatchTouchEvent。这种方法将收到触摸事件(所有,关心这个!)

答案 1 :(得分:1)

在EditText中尝试android:duplicateParentState="true"