布局中ListView不断响应onScroll事件问题

maikol 2011-04-27 04:17:31
在设计的界面中,上部为title栏, 下部为二个按钮的docor底部栏,中间为FrameLayout, 包含listview和rulerview。
上部和下部的高度为wrap_content, 中间为fill_parent,设置android:layout_weight="1"(不设该属性无法显示底部栏)。这样设计后,貌似一切都很正常,但问题就出现了。
listView设onscrollListener,在onscroll函数中打印日志,发现onscroll不断被调用,调试后发现是由于onlayout消息导致onscroll事件。该问题产生另一个问题,在listview添加EditText到headerView中,点击EditText无法弹出输入法。请问如何解决该问题?


具体布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contactpanel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<!-- titel -->
<LinearLayout
android:id="@+id/layout_topbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_topbar"
>
<TextView android:id="@+id/panel_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginTop="8dip"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_marginLeft="10dip"
/>
</LinearLayout>

<!-- content -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none"
android:clickable="true"
android:divider="#33000000"
android:dividerHeight="1px"
android:cacheColorHint="#00000000"
android:background="#FFFFFF"
/>
<RulerView
android:id="@+id/ruler"
android:layout_width="28dip"
android:layout_height="0dip"
android:layout_gravity="right"
android:layout_weight="1.0"
android:layout_marginRight="0dip"
android:layout_marginTop="5dip"
android:paddingLeft="6dip"
android:paddingRight="7dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:background="@drawable/ruler_bg"
/>
</FrameLayout>
</LinearLayout>

<!-- docor -->
<LinearLayout android="@+id/docor"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button android:id="@+id/ok"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_weight="1"
android:text="ok"
/>
<Button android:id="@+id/cancel"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_weight="1"
android:text="cancel"
/>
</LinearLayout>

</LinearLayout>
...全文
1525 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh1314al 2011-06-20
  • 打赏
  • 举报
回复
楼主,你好!你可以把RulerView view的源码发我一下吗。谢谢了。dh1314al@163.com 我着急用了,在线等
maikol 2011-05-12
  • 打赏
  • 举报
回复
最后解决的办法是把RulerView放到外面。产生该问题的原因是ListView高度不稳定。
maikol 2011-04-27
  • 打赏
  • 举报
回复
如果中间的framelayout不加android:layout_weight="1",就不会有问题。
passself 2011-04-27
  • 打赏
  • 举报
回复
应该是你的listView没有设置固定的大小,每次向里填加数据的时候就会调用onScroll事件

80,360

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧