1

我有一个列表视图。我的观点是,在该视图上选择一个元素后,我想在该元素的正下方显示一个菜单栏。我尝试做的几乎是应用程序 Any.Do 之类的东西。

这是我打算做什么的图片。

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

为了填充数组,我使用了这段代码:

任务板类

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 是即时显示给用户的视图。这是一段代码,用于调用我要显示的菜单栏:

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 个项目出现在第二个位置(这就是填充页面的项目数)。我猜这个位置是根据屏幕而不是 ListView..

   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);

我希望这可以帮助您理解问题

4

2 回答 2

0

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

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW, view.getId());

另一种解决方案是使用LinearLayout,但需要一个循环来查找所点击项目的索引并在其下方添加新项目:

parent.addView(subItem, index+1);
于 2012-04-20T10:58:22.777 回答
0

您所做的是,在您的列表项布局 xml 中,您还有菜单(包装在垂直线性布局中),但将其设置为 android:visibility="gone"。按下该项目时,您只需显示隐藏的菜单视图。

于 2012-04-20T10:33:21.267 回答