2012-04-20 51 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