I have a menu which has sharp rectangle background. I have tried a lot i can't change it to rounded background. popup_menu.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#1F2026"
android:orientation="horizontal"
>
<TextView
android:id="@+id/details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:fontFamily="@font/quicksand_regular"
android:text="@string/add_to_favourite"
android:textColor="@color/icon_color_dark" />
</LinearLayout>
The above given is my popup menu xml.
public static void showAlbumPopupOptions(final Activity activity, ImageView listMore,
final Song song, String songId, int playingState) {
final boolean isLogged = AppController.getBooleanPreference(Constants.LOGGED_IN, false);
String[] listItems;
listItems = activity.getResources().getStringArray(R.array.popup_menu_add_album);
ArrayAdapter<String> mPopupAdapter = new ArrayAdapter<>(activity, R.layout.popup_menu, R
.id.details, listItems);
final ListPopupWindow albumPopup = new ListPopupWindow(activity);
albumPopup.setContentWidth(Utils.measureContentWidth(mPopupAdapter, activity));
albumPopup.setAdapter(mPopupAdapter);
albumPopup.setHeight(ListPopupWindow.WRAP_CONTENT);
albumPopup.setAnchorView(listMore);
albumPopup.setModal(true);
albumPopup.setDropDownGravity(Gravity.END);
final LoadingProgressDialog loadingProgressDialog = new LoadingProgressDialog(activity, R
.style
.DialogThemeProgress, false);
albumPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
if (position == 0) {
if (isLogged) {
DialogPlayList dialogPlayList = new DialogPlayList(activity,
activity, String.valueOf(song.getId()), loadingProgressDialog);
dialogPlayList.show();
loadingProgressDialog.setDimDialog(false);
loadingProgressDialog.showProgress();
} else {
redirectLogin(activity);
}
albumPopup.dismiss();
} else if (position == 2) {
showAudioShare(song, activity);
albumPopup.dismiss();
} else if (position == 1) {
AppController.addToQueueSongs(activity, song, songId,
playingState);
albumPopup.dismiss();
}
}
});
albumPopup.show();
}
The above given method is called when user clicks the more option in the list. I am adding datas to the list from this method. As a result I am getting this.

But actually what I want is - image given below.

I have tried setting background as rounded corners but no use. I literally have no idea how to achieve. Please suggest me some solutions. Thanks in advance.
With the a Material Components Theme you have a default rounded background with a corner radius of 4dp.

You can customize it using the listPopupWindowStyle attribute in your app theme:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="listPopupWindowStyle">@style/myListPopupWindow</item>
</style>
with:
<style name="myListPopupWindow" parent="Widget.MaterialComponents.PopupMenu.ListPopupWindow">
<item name="android:popupBackground">@drawable/popupMenuBackground</item>
</style>
where the drawable background is something like:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/colorSurface"/>
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp"/>
<padding
android:bottom="8dp"
android:top="8dp"/>
</shape>

I found the answer. Add this code with ListPopupWindow before setting the adapter.
Drawable background = ContextCompat.getDrawable(activity, R.drawable
.res_black_menuroundfilled_corner);
albumPopup.setBackgroundDrawable(background);
Remove android:background="#1F2026" in popup_menu.xml
Below given code is for drawable file. res_black_menuroundfilled_corner
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1F2026"/>
<corners android:radius="15dp"/>
</shape>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With