如何加载菜单列表视图中,当列表项长按(How to load menu inside a list

2019-10-19 08:33发布

我试图模仿Twitter的Android应用程序的操作。 当你长按/滑动鸣叫(列表项),它看起来像这样

这很容易让用户采取的列表项的操作,而无需离开屏幕。 我该怎么做我的应用程序类似的东西?

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

我通过这个实现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>

Answer 1:

你有没有试过可扩展列表视图?

http://developer.android.com/reference/android/widget/ExpandableListView.html

http://www.youtube.com/watch?v=mwE61B56pVQ



Answer 2:

你可以只窝在每个单独的另一个布局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>

然后在你的活动,只需设置一个onItemLongClickListenerListView ,以及切换的知名度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;
            }

        }

}


文章来源: How to load menu inside a list view when a list item is long pressed