Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-列表元素下方的菜单栏_Android_Show Hide_Menubar - Fatal编程技术网

Android-列表元素下方的菜单栏

Android-列表元素下方的菜单栏,android,show-hide,menubar,Android,Show Hide,Menubar,我有一个列表视图。我的观点是,在选择该视图中的一个元素后,我想在该元素的正下方显示一个菜单栏。我试着做的和应用程序Any.do差不多 以下是我打算做的一些事情 我怎么做?我宁愿不使用GreenDroid 为了填充数组,我使用以下代码snniped: 任务板类 setListAdapter(new SimpleAdapter(this, array_tasks, R.layout.dash_tasks, new String[] { "task", "project" , "date"}, n

我有一个列表视图。我的观点是,在选择该视图中的一个元素后,我想在该元素的正下方显示一个菜单栏。我试着做的和应用程序Any.do差不多

以下是我打算做的一些事情

我怎么做?我宁愿不使用GreenDroid

为了填充数组,我使用以下代码snniped:

任务板类

setListAdapter(new SimpleAdapter(this, array_tasks, R.layout.dash_tasks,
  new String[] { "task", "project" , "date"}, new int[] { R.id.dashtask,
  R.id.taskproject, R.id.final_date}));
R.layout.dash_tasks是im向用户显示的视图。 这是一段代码,用于调用我要显示的菜单栏:

dash_tasks.xml

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/menu_bar"
            style="@style/page"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:baselineAligned="true"
            android:gravity="center_vertical"
            android:orientation="horizontal" 
            android:visibility="gone">

            <include layout="@layout/menubar"></include>

        </RelativeLayout>
编辑:

我找到了我点击的位置。问题是,这是一个相对的位置。我的意思是,如果我点击数组中的第二个项目,菜单栏将每隔7个项目显示在第二个位置,即填充页面的项目数。我猜这个位置是根据屏幕而不是列表视图

   lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        View x= parent.getChildAt(position);
        View a= x.findViewById(R.id.mini_menu_bar);
        a.setVisibility(View.VISIBLE);

我希望这有助于您理解这个问题,您要做的是,在列表项布局xml中,您还将菜单包装为垂直线性布局,但将其设置为android:visibility=gone。按下该项时,您只需显示隐藏的菜单视图。

这取决于您希望同时显示多少视图。如果只有一个,并且您希望它在没有太多编程的情况下脱颖而出,我会选择QuickAction。如果同时展开了多个视图,我的建议是使用RelativeLayout和下文。你需要做的很简单。确保有一种方法可以让您在点击的项目下方找到项目,在点击的项目下方添加新视图,并将点击项目下方的项目更改为新项目下方。类似下面的代码

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW, view.getId());
另一种解决方案是使用LinearLayout,但需要一个循环来查找所点击项目的索引,并在其下方添加新项目:

parent.addView(subItem, index+1);

看这个:你的意思是显示手机边缘的视图;谢谢@nibha的链接,但我不想使用QuickAction对话框;我试过这样做,但是当我这样做的时候,菜单栏出现在每个元素的下面,而不是我选择的元素。如果它出现在所有项目的下面,那么你就做错了。在适配器中有一个selectedItem变量,在getView中执行ifselectedItem==position{}else{}。按list item可在adapter中设置所选项目,并使用我在上面介绍的代码刷新数据。它确实起到了作用。每次我从列表中选择一项,菜单栏每8项显示一次。假设我有30个任务,无论我选择哪个项目,菜单栏都会出现在1、9、17等等…这可能是因为您使用的是convertview,它是一个循环视图,如果不需要,您必须显式隐藏菜单栏,而不是…我想这是因为SimpleAdapter。我只能在一个页面中看到8个任务,要想看到更多,我必须向下滚动,这就是第二个菜单栏出现的地方。我假设SimpleAdapter每页填充,因此菜单栏显示SimpleAdapter被调用的次数。我要做的第一件事是隐藏菜单栏dash_task.xml它不起作用。。我曾尝试在侦听器中使用此代码,但它没有做任何事情…除此之外,我已经创建了RelativeLayout,我只想设置项下可见的可见性…上面的代码使用的是RelativeView而不是ListView。另外,还应该设置视图Id。视图Id已在侦听器方法中提供给您,因此我正在使用它。如果您能为我将代码放在这里。我不看一眼就很难说出来。