Establecer el menú emergente a pantalla completa
Nota: Este es el menú emergente no ventana emergente. Así que le pido a todos a leer con cuidado.
He implementado menú pop. Se muestra en la mitad de la pantalla. Quiero extender esto a todo el ancho del dispositivo. Intenté cambiar su estilo poniendo layout_width
como match_parent
pero sin éxito.
- Ancla el menú emergente sobre el botón de desbordamiento
- Cómo configurar el ID para los elementos del menú emergente, que se encuentra como id de la vista?
- PopupMenu hace clic para que RecyclerView se desplace
- Cómo obtener la posición de un elemento de un PopupMenu en un ListView personalizado
- ¿Cómo puedo reemplazar mi código popupmenu con la lista popupwindow?
A continuación se muestra lo que he probado hasta ahora:
Estilo
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="popupMenuStyle">@style/PopupMenu</item> </style> <!-- Change Overflow Menu Background --> <style name="PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow"> <item name="android:popupBackground">#888888</item> <item name="android:layout_width">match_parent</item> </style>
A continuación se muestra mi código java:
PopupMenu menu = new PopupMenu(getActivity(), tvnext); for (int i = 0; i < array.size(); i++) { menu.getMenu().add(1, i, 1, array.get(i).getAccountName()); } menu.show(); menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { setUpNextFunctionality(item.getItemId()); return false; } });
PS: Por favor, no me sugiero que use la ventana emergente. Esta es mi última opción si nada funciona.
- ¿Cómo mostrar el menú emergente exacto debajo de la barra de acción?
- Menú emergente personalizado de Android con conmutador
- Detectar que un PopupMenu está cerrado en el nivel 11 de API
- PopupMenu no se encuentra correctamente dentro de RecyclerView
- Divisor de menú emergente para el tema de compatibilidad de aplicaciones
- Rellenar popupmenu sin archivo XML en android
- Cómo cambiar la anchura de Android PopupMenu
- Posición de popupmenu de Android
Tengo tu pregunta. En lugar de modificar algo utilizar nuevo widget que puede cumplir fácilmente con su necesario y compatible con la nueva versión.
Google introduce un nuevo concepto de material como hoja inferior
Para usarlo en android puede utilizar librerías git hub como esta .
No creo que pueda hacer eso sin la implementación de su propia ventana emergente similar a PopupMenu
. Si selecciona MenuPopupHelper::createPopup
:
@NonNull private MenuPopup createPopup() { final WindowManager windowManager = (WindowManager) mContext.getSystemService( Context.WINDOW_SERVICE); final Display display = windowManager.getDefaultDisplay(); final Point displaySize = new Point(); if (Build.VERSION.SDK_INT >= 17) { display.getRealSize(displaySize); } else if (Build.VERSION.SDK_INT >= 13) { display.getSize(displaySize); } else { displaySize.set(display.getWidth(), display.getHeight()); } final int smallestWidth = Math.min(displaySize.x, displaySize.y); final int minSmallestWidthCascading = mContext.getResources().getDimensionPixelSize( R.dimen.abc_cascading_menus_min_smallest_width); final boolean enableCascadingSubmenus = smallestWidth >= minSmallestWidthCascading; final MenuPopup popup; if (enableCascadingSubmenus) { popup = new CascadingMenuPopup(mContext, mAnchorView, mPopupStyleAttr, mPopupStyleRes, mOverflowOnly); } else { popup = new StandardMenuPopup(mContext, mMenu, mAnchorView, mPopupStyleAttr, mPopupStyleRes, mOverflowOnly); } // Assign immutable properties. popup.addMenu(mMenu); popup.setOnDismissListener(mInternalOnDismissListener); // Assign mutable properties. These may be reassigned later. popup.setAnchorView(mAnchorView); popup.setCallback(mPresenterCallback); popup.setForceShowIcon(mForceShowIcon); popup.setGravity(mDropDownGravity); return popup; }
Usted verá que el tamaño de PopupMenu tipo de hardcoded según el tamaño de la pantalla. Así que probablemente la manera más fácil es comprobar código fuente relacionado con PopupMenu
e implementar algo similar, pero con tamaños que te gustaría tener.
Prueba esto:
pwindow = new PopupWindow(layoutt,LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,true);
Intenta establecer minWidth en tu estilo como se muestra a continuación
<item name="android:minWidth">1000dp</item>
prueba esto ,
Inflater.inflate (R.layout.menu, menú);
o
Menu.inflate (R.layout.popup_menu);
Que sea translúcido. Hice lo mismo para aparecer así. Por favor, marque esta. Puede ser también trabajo para usted.
En su manifiesto:
<activity android:name=".ActivityInviteFriend" android:theme="@style/Theme.TransparentInfo"> </activity>
En estilo: tema principal:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/LightappActionBarColor</item> <item name="colorPrimaryDark">@color/appColor</item> <item name="colorAccent">@color/btn_color</item> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> </style>
Y su tema personalizado:
<color name="semiTransparentBlack">#00000000</color> <style name="Theme.TransparentInfo" parent="AppTheme"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@color/semiTransparentBlack</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">false</item> <item name="android:backgroundDimEnabled">true</item> </style>
Su Actividad:
package com.gc.naifizzy; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.Toast; public class ActivityInviteFriend extends AppCompatActivity { Button btn_send; Snackbar snackbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setBackgroundDrawable( new ColorDrawable(android.graphics.Color.TRANSPARENT)); setContentView(R.layout.activity_invite_friend); btn_send = (Button) findViewById(R.id.btn_send); btn_send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //snack("Invitation sent successfully..."); Toast.makeText(ActivityInviteFriend.this, "Invitation sent successfully", Toast.LENGTH_SHORT).show(); finish(); } }); } public void snack(String data) { snackbar = Snackbar .make(findViewById(android.R.id.content), data, Snackbar.LENGTH_LONG) .setAction("Dismiss", new View.OnClickListener() { @Override public void onClick(View view) { snackbar.dismiss(); } }); snackbar.show(); } }
Y finalmente su disposición del xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#502f2f2f"> <RelativeLayout android:layout_width="match_parent" android:layout_height="300dp" android:layout_centerInParent="true" android:background="@android:color/white" android:paddingLeft="5dp" android:paddingRight="5dp"> <RelativeLayout android:id="@+id/dds" android:layout_width="match_parent" android:layout_height="45dp" android:background="#112f2f2f" android:paddingTop="10dp" android:visibility="visible"> <TextView android:id="@+id/txt_what" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" android:gravity="center_vertical|left" android:paddingLeft="10dp" android:text="Invite people to join your tree on Naifizzy" android:textColor="@color/appColor" android:textSize="15sp" android:textStyle="bold" /> </RelativeLayout> <View android:id="@+id/view" android:layout_width="match_parent" android:layout_height="3dp" android:layout_below="@id/dds" android:layout_marginTop="3dp" android:alpha="0.5" android:background="@color/appColor" android:visibility="visible" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/view" android:layout_marginTop="20dp" android:gravity="center_vertical|center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/txt_share" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:text="Invite people by sharing this link " android:textColor="#992f2f2f" android:textSize="15sp" /> <EditText android:id="@+id/edt_user_link" android:layout_width="match_parent" android:layout_height="50dp" android:layout_below="@id/txt_share" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@drawable/layout_border" android:editable="false" android:paddingLeft="10dp" android:singleLine="true" android:text="http://naifizzy.com/@parik_dhakan" android:textColor="#992f2f2f" android:textSize="15sp" /> <View android:id="@+id/view1" android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@id/edt_user_link" android:layout_marginBottom="20dp" android:layout_marginTop="20dp" android:alpha="0.5" android:background="@color/appColor" /> <TextView android:id="@+id/txt_share2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/view1" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:text="Send by email " android:textColor="#992f2f2f" android:textSize="15sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="30dp" android:layout_marginTop="10dp" android:orientation="horizontal" android:visibility="visible" android:weightSum="1"> <LinearLayout android:id="@+id/ed_l" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.2" android:background="@drawable/layout_border" android:orientation="horizontal" android:visibility="visible"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TextInputLayout android:id="@+id/edl_current" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:paddingTop="5dp" android:textColorHint="#992f2f2f" android:textSize="15sp"> <EditText android:id="@+id/edt_mail" style="@style/StyledTilEditText" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:background="@android:color/transparent" android:hint="Enter recipients' Email seprated by commas " android:inputType="textEmailAddress" android:paddingLeft="10dp" android:textColor="#992f2f2f" android:textColorHint="#992f2f2f" android:textSize="15sp" /> </android.support.design.widget.TextInputLayout> <ImageView android:id="@+id/img_show" android:layout_width="30dp" android:layout_height="25dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginEnd="20dp" android:scaleType="centerInside" android:src="@drawable/ic_eye" android:visibility="gone" /> </RelativeLayout> </LinearLayout> <EditText android:id="@+id/edt_user_link2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/txt_share2" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@drawable/layout_border" android:paddingLeft="10dp" android:singleLine="true" android:text="http://naifizzy.com/@parik_dhakan" android:textColor="#992f2f2f" android:textSize="15sp" android:visibility="gone" /> <Button android:id="@+id/btn_send" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="5dp" android:layout_weight="0.8" android:background="@drawable/signupbg" android:gravity="center_vertical|center_horizontal" android:text="Send\nInvites" android:textColor="@android:color/white" android:textSize="10sp" /> </LinearLayout> </LinearLayout> </RelativeLayout> </RelativeLayout>
- El servicio onCreate de Android se llama varias veces sin llamar a onDestroy
- ¿Es posible perder una conexión de base de datos SQLite?