如何在长按列表项时在列表视图中加载菜单

时间:2014-02-11 18:52:11

标签: android android-listview android-ui

我正试图模仿Twitter安卓应用中的动作。当您长按/滑动推文(列表项)时,它看起来像这样

enter image description here

这使用户可以轻松地对列表项执行操作而无需离开屏幕。我怎么能在我的应用程序中做类似的事情?

现在我添加了一个上下文菜单,看起来像是这样(请注意它淡出应用程序的其余部分)。

enter image description here

我是通过registerForContextMenu(listView)

实现的

目前,我的列表是这样的:

ListAdapter adapter = new SimpleAdapter(
        MainActivity.this, myList,
        R.layout.list_items, new String[] {LI_ID,
        LI_NAME, LI_COUNT}, new int[] {
        R.id.li_id, R.id.li_name, R.id.li_count});
setListAdapter(adapter);

我的布局就像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/li_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <TextView
        android:id="@+id/li_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="16dip"
        android:textColor="#000000"
        android:paddingTop="15dip"
        android:paddingBottom="15dip"
        android:paddingLeft="10dip"
        android:textStyle="bold"/>

    <TextView android:id="@+id/li_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textColor="#ffffff"
        android:textStyle="bold"
        android:background="#9ed321"
        android:paddingRight="3dip"
        android:paddingLeft="3dip"/>


</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以在最初不可见的每个ListView项目中嵌套另一个布局,然后只需在长点击事件中切换视图的可见性。

例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:animateLayoutChanges="true" >

    <TextView
        android:id="@+id/main_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:padding="16dp"
        android:layout_gravity="center" />

    <LinearLayout
        android:id="@+id/hidden_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Delete" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Edit" />

    </LinearLayout>

</LinearLayout>

然后在您的活动中,只需在onItemLongClickListener上设置ListView,然后切换即可 hidden_view的可见性:

public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id){
    LinearLayout mView = view.findViewById(R.id.hidden_view);

       switch(mView.getVisibility()){
            case View.VISIBLE:
                mView.setVisibility(View.GONE);
                break;
            case View.GONE:
                mView.setVisibility(View.VISIBLE);
                break;
            }

        }

}