我有一个包含ListView和RelativeLayout中的几个按钮的布局。我试图让用户使用自定义的绘画视图布局在页面上绘制。好消息是,我几乎可以完成所有工作并查看应如何操作,但是最后一个也是最令人沮丧的问题是ListView根本无法单击。我想在ListView上绘制并使其可单击。
有趣的是,页面上的按钮仍可单击,而ListView中的项目则不可。我认为正在发生的事情是ListView由适配器加载并首先加载(因此位于所有内容之后)。我该怎么做才能使ListView可点击?
我尝试添加android:focusableInTouchMode =“ true” android:focusable =“ true”,但这没什么区别。
我的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<ListView android:id="@+id/lv"
android:layout_height="match_parent"
android:layout_width="match_parent"
></ListView>
<com.my.app.PaintView
android:id="@+id/paintView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
Buttons Here.../>
</RelativeLayout>
答案 0 :(得分:0)
对于您不想想要接收触摸事件的元素,focusable
属性应为false
。要覆盖PaintView
而又不拦截触摸事件,可以向其中添加一些XML属性:
<com.my.app.PaintView
...
android:focusable="false"
android:clickable="false" />
只要您没有为PaintView设置OnClickListener
或OnTouchListener
,触摸事件就应该简单地传递给它后面的视图。
答案 1 :(得分:0)
设法找到一个完美的解决方案(至少对我而言)。我想如果没有listview,这会容易得多,但是我希望listview既能工作又能在画布上绘图。我最后要做的就是在具有ListView的主活动中设置一个onTouchListener,然后将其与MotionEvent发送到PaintView。很简单,效果很好:
compStyle.toString()
在此示例中,paintView.onTouchEvent实际上可以是自定义视图中的任何方法,为简单起见,只需将其保留在“ onTouchEvent”即可。