2012-04-17 4 views
7

Я использую ActionBarSherlock и хочу аналогичную функциональность кнопки «домой», как это известно в Google Maps.ActionBarSherlock: как получить доступ к домашнему виду кнопки?

Home Button like in Google Maps

я уже успел открыть QuickAction (http://code.google.com/p/simple-quickactions/) при нажатии кнопки домой с этим куском кода:

@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 lib, правильно? 2. Вариант 2 означает, что мне нужно отключить кнопку «домой» и добавить туда свой собственный вид? – Konsumierer

+1

С # 1 вам нужно предоставить только настраиваемые макеты для адаптера (как для выбранного, так и для раскрывающегося списка), которые используются для навигации по спискам. Вы можете посмотреть приложения на ICS, такие как Maps или приложение Calendar, для того, как это можно настроить. И для № 2, да, вам придется отключить обычный домашний предмет, так как ваш полностью заменит его. –

+2

hello @JakeWharton, можем ли мы использовать 'findViewById (R.id.abs__home);' получить значок дома? И мои приложения minSdk - 10. –

Смежные вопросы