navegacion - personalizar action bar android studio
Vista desplegable personalizada de la barra de acciones de Android al hacer clic en el elemento (1)
Ok, elaboré una solución yo mismo. Básicamente, actionProviderClass se utiliza para crear una instancia de un actionView en la barra de acciones. En esta clase, puede adjuntar un oyente onClick a la vista que infle. Utilicé este oyente para inflar una vista desplegable en el cuadro principal cuando hice clic.
Por ejemplo
public class BaseProvider extends ActionProvider {
protected final Context context;
protected final int layout;
protected final BaseProvider self;
protected View view;
protected int positionLeft = 0;
protected Dropdown dropdown;
public BaseProvider(Context context, int layout, Dropdown dropdown) {
super(context);
this.layout = layout;
this.context = context;
this.self = this;
this.dropdown = dropdown;
}
@Override
public View onCreateActionView() {
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View view = inflater.inflate(this.layout, null);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
self.onItemClick();
}
});
this.view = view;
return view;
}
public boolean onItemClick(){
toggleDropdown();
return true;
}
protected void toggleDropdown(){
this.positionLeft = getRelativeLeft(view);
DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft);
}
protected int getRelativeLeft(View view) {
int[] loc = new int[2];
view.getLocationOnScreen(loc);
return loc[0];
}
}
Estoy escribiendo una aplicación de Android para tabletas. Me fui con la barra de acción para crear mis íconos. Sin embargo, necesito abrir una vista personalizada cuando se hace clic en uno de los elementos del menú.
No quiero una barra de acciones personalizada: necesito inflar una vista personalizada cuando se hace clic en la barra de acciones "Buscar temas". Esta vista deberá aparecer como un menú desplegable, pero deberá usar mi propio diseño personalizado, ya que no se usará para la navegación.
Aquí está mi menú.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_browse"
android:title="Browse Subjects"
android:showAsAction="always"
android:actionLayout="@layout/action_layout_browse"
android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider"
/>
<item android:id="@+id/menu_settings"
android:title="Settings"
android:orderInCategory="100"
android:showAsAction="never" />
</menu>
Supuse que ActionProviderClass me permitiría crear una instancia de una vista personalizada cuando se hace clic en el elemento de la barra de acciones, pero no puedo encontrar un camino, tal vez voy por el camino equivocado.
¡Cualquier ayuda en esto sería MUCHO apreciada! ¡Gracias!
ACTUALIZACIÓN: gracias por los enlaces al estilo de la barra de acción, pero no quiero simplemente diseñar un menú desplegable. Quiero inflar una vista personalizada. La vista realizará consultas de DB, etc. también.