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



预期结果

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

问题

android:onClick="selectCellSearch"设置为RelativeLayout,点击EditTextonClick给出的selectCellSearch回调函数似乎没有被触发。

源代码

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)之后生成要加载的搜索页面的URL。

更新

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);
    }
}

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

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

要接收点击,您可以:

  • 你确定亲戚布局是完全必要的吗
  • 您可以在EditText上设置onClick
  • 在RelativeLayout上覆盖onInterceptTouchEvent或dispatchTouchEvent。此方法将接收到触摸事件(全部,关心此!)

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

相关内容

  • 没有找到相关文章

最新更新