2012-04-20 53 views
1

我有一个ListView。我的观点是,在选择了该视图中的一个元素之后,我想在该元素下方显示菜单栏。我试图做的事情与Any.Do应用程序非常相似。Android - 列表元素下的菜单栏

heres a picture我打算做的事情。

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

为了填补我使用此代码阵列snniped:

TaskBoard.class

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个项目(即填充页面的项目数量)在第二个位置出现。林guessin这个位置acording到屏幕上,而不是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); 

我希望这有助于你理解这个问题

+0

看看这个:HTTP ://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/ – 2012-04-20 10:31:54

+0

你的意思是显示手机边缘的视图? ;) – waqaslam 2012-04-20 10:32:11

+0

感谢链接@nibha,但我不想使用QuickAction对话框。 ;) – Akash 2012-04-20 14:48:29

回答

0

你要做的就是,在你的列表中的项目布局XML你也有菜单(用垂直线性布局包裹),但将其设置为android:visibility =“gone”。当物品被按下时,你只需显示隐藏的菜单视图。

+1

我认为使用QuickAction对话框更合适 – waqaslam 2012-04-20 10:34:52

+0

我试过这样做,但是当我这样做菜单栏出现在每个元素下面,而不是我选择的那个.. – Akash 2012-04-20 10:55:01

+0

我真的不想使用这种方法@Waqas。 .. – Akash 2012-04-20 10:55:59

0

这取决于您想同时显示多少个视图。如果只有一个,并且你希望它在没有很多编程的情况下脱颖而出,那么我会去寻找QuickAction。如果在扩展的同时有多个视图,我的建议是使用RelativeLayout和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); 
+0

它没有工作..我已经尝试过使用这个代码里面的监听器,但它没有做任何事情...旁边我已经有了RelativeLayout创建,我只想设置可见性下面的项目... – Akash 2012-04-20 16:10:42

+0

上面的代码是使用'RelativeView'代替'ListView'。另外,视图ID也应该设置。 – 2012-04-20 16:19:36

+0

视图ID已经提供给你(在Listener方法中),这就是我正在使用的。 – Akash 2012-04-20 16:34:57