¿Cómo ocultar el icono de acción compartida (que utiliza más) cerca del proveedor de acciones compartidas?
Mira la foto. ¿Cómo puedo ocultar el icono "P" que significa compartir con Pinterest?
- Cómo puedo obtener mi ShareActionProvider para enviar texto dinámicamente (de los oyentes) ver buscapersonas etc
- ActionBarSherlock & ShareActionProvider causar InflateException
- Android: XML personalizado para ShareActionProvider
- No se puede emitir de ActionProvider a ShareActionProvider
- ¿Cuál es el uso del espacio de nombres de aplicaciones en android xml
Ambos están en la barra de acción y uso ActionBarSherlock.
- ShareActionProvider para el nivel de API inferior a 14
- Uso de ShareActionProvider con el botón en el diseño
- Configuración de un icono de recurso compartido en Actionbar ShareActionProvider
- No se puede emitir Proveedor de acciones para compartir el proveedor de acciones
- ¿Pasar la URL de WebView a ShareActionProvider?
- Compartir imagen y texto a través de whatsapp
- Yo uso ShareActionProvider en PopupMenu, pero mostrar dos PopupMenu?
- Android ShareActionProvider funciona en el modo de depuración pero no en el dispositivo real
Si desea conservar todo el modelo de datos de historial de compartición , pero simplemente no desea la "actividad de recurso compartida por defecto" icom. La respuesta en ¿Cómo se desactiva el historial de acciones cuando se utiliza ShareActionProvider? No es lo suficientemente bueno.
Lo que debe hacer es:
- Copiar estas clases de la ActionBarSherlock a su código de proyecto
- ShareActionProvider.java
- ActividadChooserView.java
- En su clase ShareActionProvider.java, importe el ActivityChooserView.java que acaba de copiar en lugar de la ubicación del archivo ActionBarShelock
- En el ActivityChooserView.java –
- Busque la línea
if (activityCount > 0 && historySize > 0)
- Reemplazar esta línea por
if (false)
(es bastante feo, pero es la solución más rápida, puedes ahondar en el código para eliminar todas las ocurrencias de la implementación de DefaultActivity)
- Busque la línea
Edición: No olvide establecer el nuevo ActionProvider
a su elemento de menú, desde XML se vería así: android:actionProviderClass="com.*.CustomShareActionProvider"
¡Eso es!
Encontré una manera de trabajar alrededor de esto. Estoy utilizando la biblioteca de soporte 23.0.1, no he probado esto en otras versiones de la biblioteca de soporte.
La solución es fácil, cuando se crea ShareActionProvider, simplemente anula el método onCreateActionView () y devuelve null para ello. A continuación, puede realizar un seguimiento de toda la historia en el menú emergente, pero el historial no se mostrará en la barra de herramientas.
Aquí hay un ejemplo de código:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(Menu.NONE, R.id.menu_share, Menu.NONE, R.string.share); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); mShareActionProvider = new ShareActionProvider(this) { @Override public View onCreateActionView() { return null; } }; item.setIcon(R.drawable.abc_ic_menu_share_mtrl_alpha); MenuItemCompat.setActionProvider(item, mShareActionProvider); return true; }
Actualmente no he encontrado ningún problema usando este trabajo alrededor.
Basado en la respuesta de Sean he creado las clases necesarias, puedes copiarlas en tu proyecto ( https://gist.github.com/saulpower/10557956 ). Esto no sólo agrega la capacidad de desactivar el historial, sino también de filtrar las aplicaciones con las que desea compartir (si conoce el nombre del paquete).
private final String[] INTENT_FILTER = new String[] { "com.twitter.android", "com.facebook.katana" }; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.journal_entry_menu, menu); // Set up ShareActionProvider's default share intent MenuItem shareItem = menu.findItem(R.id.action_share); if (shareItem instanceof SupportMenuItem) { mShareActionProvider = new ShareActionProvider(this); mShareActionProvider.setShareIntent(ShareUtils.share(mJournalEntry)); mShareActionProvider.setIntentFilter(Arrays.asList(INTENT_FILTER)); mShareActionProvider.setShowHistory(false); ((SupportMenuItem) shareItem).setSupportActionProvider(mShareActionProvider); } return super.onCreateOptionsMenu(menu); }
- La compilación Maven de Android da problemas al procesar "javax / xml / namespace / QName.class":
- ¿Cuál es la mejor manera en Android para eliminar todas las filas de una tabla