在设计的界面中,上部为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>

解决方案 »

  1.   

    应该是你的listView没有设置固定的大小,每次向里填加数据的时候就会调用onScroll事件
      

  2.   

    如果中间的framelayout不加android:layout_weight="1",就不会有问题。
      

  3.   

    最后解决的办法是把RulerView放到外面。产生该问题的原因是ListView高度不稳定。
      

  4.   

    楼主,你好!你可以把RulerView view的源码发我一下吗。谢谢了。[email protected] 我着急用了,在线等