0

预期结果

有一个使用 a EditTextinside a实现的搜索栏RelativeLayout。由于某种原因,要搜索的查询不会EditText直接输入,而是在单击搜索栏时触发 WebView 并加载一个搜索页面,用户可以在其中输入他们的搜索查询。

问题

设置android:onClick="selectCellSearch"RelativeLayout,点击给出EditTextselectCellSearch回调函数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"用于在单击搜索栏后生成要加载的搜索页面的 URL,例如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);
    }
}
4

2 回答 2

3

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

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

要获得点击,您可以:

  • 你确定 RelativeLayout 是完全必要的吗?
  • 您可以在 EditText 上设置 onClick
  • 覆盖RelativeLayout 上的onInterceptTouchEvent 或dispatchTouchEvent。此方法将接收触摸事件(所有,关心这个!)
于 2013-07-17T08:09:07.837 回答
1

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

于 2013-07-17T08:01:51.267 回答