将LinearLayout放在ListView之上

时间:2015-03-31 03:34:20

标签: android

我想在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会亮起(突出显示)。

提前感谢。

2 个答案:

答案 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>