Android: фон моего всплывающего окна прозрачный

#android #background #popupwindow

#Android #фон #всплывающее окно

Вопрос:

Я создал всплывающее окно следующим образом :

 PopupWindow popupWindow = new PopupWindow(LayoutInflater.from(this).inflate(R.layout.main_popup_navigation, null, false), ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setWidth((int) this.getResources().getDimension(R.dimen.navigation_popup_width));
popupWindow.showAsDropDown(toolbar);
  

Он работает нормально, за исключением того, что у него нет фона. Фон всплывающего окна полностью прозрачный.

Как я могу установить фон (окно тень), похожий на всплывающее меню или счетчик темы Overlay.AppCompat.Светлая тема? Спасибо.

Ответ №1:

Фон типа Spinner

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="#CABBBBBB"/>
        <corners android:radius="2dp" />
    </shape>
</item>

<item
    android:left="0dp"
    android:right="0dp"
    android:top="0dp"
    android:bottom="2dp">
    <shape android:shape="rectangle">
        <solid android:color="@android:color/white"/>
        <corners android:radius="2dp" />
    </shape>
</item>
</layer-list>
  

чтобы установить фон

 popupWindow.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.spinner_background));
  

Комментарии:

1. Спасибо, не хватает только тени. 🙂 Но я не могу использовать ThemeOverlay. AppCompat. Светлая тема? (Не создавая его самостоятельно)

2. изменен xml для добавления тени

Ответ №2:

MainActivity.java

 popupWindow.setBackgroundDrawable(this.getDrawable(R.drawable.main_bg_navigation));
popupWindow.setElevation(43);
  

main_bg_navigation.xml

 <?xml version="1.0" encoding="utf-8"?>

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@color/white"/>

    <corners android:radius="2dp"/>

</shape>
  

Это сделало свое дело. 🙂

Редактировать: значение белого цвета равно «fffafafa»