我想在listview顶部放置一个带有按钮的linearlayout。它工作正常。但问题是按钮的OnClick监听器未被触发。我看到列表视图的内容显示在按钮的顶部(和线性布局)。这是xml
<RelativeLayout
android:id="@+id/relativeLayoutOrdersDetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cc503F7F"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageViewOrdersAddItem"
android:src="@drawable/ic_orders_add_item"
/>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listViewOrderDetails"
>
</ListView>
</RelativeLayout>
这里的代码只是为了测试是否会触发侦听器,但事实并非如此。
imageViewOrdersAddItem = (ImageView)findViewById(R.id.imageViewOrdersAddItem);
//imageViewOrdersAddItem.bringToFront();
imageViewOrdersAddItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AppMessages.showMessage(OrdersActivity.this, "ADD BUTTON CLICKED", "ADD");
}
});
我也按照其他SO线程的建议尝试了.bringToFront(),但它不起作用。
当我点击按钮时,listitem会亮起(突出显示)。
提前感谢。
答案 0 :(得分:2)
这是因为listview直接位于linearlayout下面,并覆盖了按钮的onclick。
您可以通过将linearlayout设置为 id 并使用layout_below
将listview置于linearlayout下方来设置ListView的正确布局:
<LinearLayout
android:id="@+id/linearlayoutbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageViewOrdersAddItem"
android:src="@drawable/ic_orders_add_item"
/>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_below="@+id/linearlayoutbutton"
android:layout_height="match_parent"
android:id="@+id/listViewOrderDetails"
>
</ListView>
答案 1 :(得分:2)
在RelativeLayout中,除非指定了排序和对齐,否则在特定元素之后声明的元素的z顺序高于之前定义的元素。列表视图正在消耗所有点击。只需将您的xml布局重新排序即可。
<RelativeLayout
android:id="@+id/relativeLayoutOrdersDetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cc503F7F"
>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listViewOrderDetails"
>
</ListView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageViewOrdersAddItem"
android:src="@drawable/ic_orders_add_item"
/>
</LinearLayout>
</RelativeLayout>