tipos studio progressbar progreso menus ejemplos ejemplo desplegable cardview barra bar android android-recyclerview material-design android-toolbar android-cardview

studio - progress bar android ejemplo



Barra de herramientas dentro de CardView para crear un menĂº emergente(icono de desbordamiento) (2)

Tengo una lista que parece Google Play en un Recyclerview con Cardview, y funciona perfectamente.

Necesito agregar un menú emergente (con el icono de desbordamiento), como este:

Cuál es la mejor manera de hacer esto ?

Investigué y encontré que hay 2 opciones:

1 - con una barra de herramientas dentro del diseño de Cardview. ¿Hay algún problema de rendimiento con esta solución?

2: con un botón de imagen o vista de imagen con un icono del desbordamiento, que al hacer clic en el menú se crea.

Necesito una solución para ser compatible con> = API 10

Gracias


Paso 1 crear menú emergente xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/Not_interasted_catugury" android:orderInCategory="100" android:title="Never show stories from this category " /> <item android:id="@+id/No_interasted" android:orderInCategory="101" android:title="Not Interested"></item> </menu>

Paso 2: Haz un botón de imagen en tu tarjeta

<ImageButton android:id="@+id/imageButton" android:layout_width="20dp" android:layout_height="30dp" android:src="@drawable/ic_dots" android:paddingLeft="8dp" android:paddingRight="8dp" android:layout_below="@+id/item_detail" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:background="@null"/>

a continuación, dar un icono de dibujable

Paso 3: Dentro de tu clase titular

y establecer el elemento haga clic en listner dentro de onBindViewHolder

mImageButton= (ImageButton) view.findViewById(R.id.imageButton); holder.mImageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showPopupMenu(holder.mImageButton,position); } });

Paso 4: Muestra el menú emergente e infla el xml

private void showPopupMenu(View view,int position) { // inflate menu PopupMenu popup = new PopupMenu(view.getContext(),view ); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.popup_menu, popup.getMenu()); popup.setOnMenuItemClickListener(new MyMenuItemClickListener(position)); popup.show(); }

Paso 5: Implementar el OnMenuItemClickListener

class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener { private int position; public MyMenuItemClickListener(int positon) { this.position=positon; } @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.Not_interasted_catugury: String RemoveCategory=mDataSet.get(position).getCategory(); // mDataSet.remove(position); //notifyItemRemoved(position); // notifyItemRangeChanged(position,mDataSet.size()); mySharedPreferences.saveStringPrefs(Constants.REMOVE_CTAGURY,RemoveCategory,MainActivity.context); Toast.makeText(MainActivity.context, "Add to favourite", Toast.LENGTH_SHORT).show(); return true; case R.id.No_interasted: mDataSet.remove(position); notifyItemRemoved(position); notifyItemRangeChanged(position,mDataSet.size()); Toast.makeText(MainActivity.context, "Done for now", Toast.LENGTH_SHORT).show(); return true; case R.id.delete: mySharedPreferences.deletePrefs(Constants.REMOVE_CTAGURY,MainActivity.context); default: } return false; } }


Depende de su diseño.

Si desea un diseño como este, con una barra de herramientas puede lograrlo más fácilmente.

Algo como

<android.support.v7.widget.CardView> <LinearLayout> <Toolbar android:id="@+id/card_toolbar" /> //...... </LinearLayout> </CardView> toolbar.inflateMenu(R.menu.card_toolbar); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener(){..});

Si solo quieres una ventana emergente es más sencillo usar una imagen. Algo como:

PopupMenu popup = new PopupMenu(getContext(), mImageButton); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(......);