我一直试图找到一个解决方案几个小时,感觉就像我在stackoverflow上搜索每个问题并尝试了布局中的所有内容。 在我尝试下面显示的布局之前,edittext和两个图像按钮都在scrollview中。在这个旧的布局中,ontouch在我的片段中完美地工作,但是一旦我用edittext和两个图像按钮拉出相对布局,就不会触发ontouch。有人可以帮我解决这个问题吗?任何帮助表示赞赏。感谢
View fragmentView = inflater.inflate(R.layout.request, container, false);
fragmentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#BDCCE0" >
<EditText
android:id="@+id/etsearch"
android:layout_width="210dp"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginTop="10dp"
android:hint="search..."
android:singleLine="true"
android:imeOptions="actionDone" />
<ImageButton
android:id="@+id/bsearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/etsearch"
android:layout_marginTop="9dp"
android:src="@drawable/search" />
<ImageButton
android:id="@+id/bupdaterequests"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_toRightOf="@id/bsearch"
android:layout_marginTop="9dp"
android:src="@drawable/refresh" />
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:background="#BDCCE0"
android:layout_below="@id/etsearch" >
<TableLayout
android:id="@+id/myTableLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TableLayout>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:3)
TouchEvent从“最高”元素开始,向下“向下”View层次结构,直到被某个事件占用。在这种情况下,ScrollView,Buttons或EditText都会在事件到达RelativeLayout之前消耗该事件......
基本上我只想在有人触摸编辑文本之外时键盘消失。
我通过简单地制作根布局clickable
和focusable
来解决这个问题。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true" >
答案 1 :(得分:1)
android:clickable="true"
解决了这个问题..