2012-04-17 28 views
7

Estoy usando ActionBarSherlock y quiero una funcionalidad similar al botón de inicio como lo conoce Google Maps.ActionBarSherlock: cómo acceder a la vista del botón de inicio?

Home Button like in Google Maps

ya que lograron abrir una QuickAction (http://code.google.com/p/simple-quickactions/) al pulsar el botón de inicio con este pedazo de código:

@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; 
} 

Sin embargo estoy usando un TextView sencilla de la actividad como un ancla (R.id.text). ¿Cómo recupero la vista del botón de inicio desde la barra de acciones allí?

Oh, y findViewById(android.R.id.home) o findViewById(item.getItemId()) ambos devuelven nulo.

Respuesta

6

No puede acceder a la vista de inicio porque existe encima de la vista de contenido y en la decoración de la ventana.

Google utiliza una barra de acción personalizada en dispositivos pre-Honeycomb que existe dentro de la vista de contenido. Esto es lo que les permite hacer este menú desplegable personalizado. En Honeycomb y más reciente utilizan una versión altamente personalizada de navegación de lista en la barra de acción del sistema.

dado que está utilizando ActionBarSherlock tiene dos opciones:

  1. Ir para la navegación más nuevo estilo y personalizar la navegación incorporado en la lista.
  2. Proporcione una vista de navegación personalizada que imita la vista de inicio (por ejemplo, tiene el ícono de la aplicación en ella). Con esta vista personalizada, podrá proporcionar un ancla en la que se pueda adjuntar el menú emergente personalizado.
+0

Gracias, Jake, para dejar esto en claro. Solo dos preguntas más para ver si entendí correctamente: 1. Si voy por la opción 1, tengo que personalizar la navegación de la lista dentro de la lib de ActionBarSherlock, ¿verdad? 2. La opción 2 significa que tengo que desactivar el botón de inicio y agregar mi propia vista allí? – Konsumierer

+1

Con el n. ° 1, solo debe proporcionar diseños personalizados para el adaptador (tanto la vista seleccionada como la desplegable) que se utilizan para la navegación de lista. Puede ver las aplicaciones en ICS como Maps o la aplicación Calendario por lo personalizable que es. Y para el n. ° 2, sí, tendría que deshabilitar el elemento hogareño normal ya que el suyo lo reemplazaría por completo. –

+2

hola @JakeWharton, ¿podemos usar 'findViewById (R.id.abs__home);' para obtener el ícono de inicio? Y mi aplicación minSdk es 10. –

Cuestiones relacionadas