预期结果
在RelativeLayout
内部存在使用EditText
实现的搜索栏。出于某种原因,要搜索的查询不会直接输入到EditText
中,而是在单击搜索栏时触发WebView并加载搜索页面,用户可以在其中输入他们的搜索查询。
问题
将android:onClick="selectCellSearch"
设置为RelativeLayout
,点击EditText
,onClick
给出的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"