2012-04-17 21 views
7

我正在使用ActionBarSherlock,並希望Google地圖知道主頁按鈕的功能類似。ActionBarSherlock:如何訪問主頁按鈕視圖?

Home Button like in Google Maps

我已經成功地打開QuickAction(http://code.google.com/p/simple-quickactions/)這一段代碼按home鍵的時候:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     View anchor = findViewById(R.id.text); // how do I get the home button view here? 
     quickAction.show(anchor); 
     return true; 
    } 
    return false; 
} 

不過我現在用的是活動的一個簡單的TextView作爲錨(R.id.text)。如何從ActionBar檢索主頁按鈕視圖?

哦,而findViewById(android.R.id.home)findViewById(item.getItemId())都返回null。

回答

6

您無法訪問主視圖,因爲它存在於內容視圖上方和窗口裝飾中。

Google在內容視圖中存在的預蜂巢設備上使用自定義操作欄。這是讓他們做出這個自定義下拉菜單的原因。在Honeycomb及更新的版本中,他們在系統操作欄中使用高度定製的列表導航版本。

由於您使用ActionBarSherlock你有兩種選擇:

  1. 去爲新的樣式導航和自定義內置列表導航。
  2. 提供模仿主頁視圖的自定義導航視圖(例如,您的應用程序圖標在其中)。使用此自定義視圖,您將能夠提供可以附加自定義彈出菜單的錨點。
+0

謝謝傑克,說清楚。還有兩個問題,看看我是否理解正確: 1.如果我去選項1,我必須自定義ActionBarSherlock庫中的列表導航,對吧? 2.選項2意味着我必須禁用主頁按鈕並在那裏添加我自己的視圖? – Konsumierer 2012-04-17 08:50:06

+1

對於#1,您只需提供用於列表導航的適配器(選定視圖和下拉視圖)的自定義佈局。您可以查看ICS上的應用程序,例如Google地圖或日曆應用程序,瞭解其實際可定製程度。而對於#2,是的,你將不得不禁用正常的家庭項目,因爲你的將完全取代它。 – 2012-04-17 16:27:23

+2

hello @JakeWharton,我們可以使用'findViewById(R.id.abs__home);'獲取主頁圖標嗎?而我的Apps minSdk是10。 – 2013-12-19 15:02:03

相關問題