I am using PopupWindow
in my android app and its working fine. But I have to add elevation
to it but its not working. Here is how I am doing it
View to show in popup window popup_view_order_status
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
android:layout_margin="@dimen/margin_xlarge"
android:elevation="@dimen/margin_large"
android:padding="@dimen/margin_large">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_large"
android:textColor="@color/dark_gray"
android:textStyle="bold"
android:text="@string/lbl_order_status" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/rbAccepted"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
android:minHeight="@dimen/text_xxlarge_m"
android:text="@string/lbl_accepted"
android:textSize="@dimen/text_large"
android:onClick="onRadioButtonClicked"/>
<RadioButton
android:id="@+id/rbRejected"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
android:minHeight="@dimen/text_xxlarge_m"
android:text="@string/lbl_rejected"
android:textSize="@dimen/text_large"
android:onClick="onRadioButtonClicked"/>
<RadioButton
android:id="@+id/rbOutForDelivery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
android:minHeight="@dimen/text_xxlarge_m"
android:text="@string/lbl_out_for_delivery"
android:textSize="@dimen/text_large"
android:onClick="onRadioButtonClicked"/>
<RadioButton
android:visibility="gone"
android:id="@+id/rbReadyForPickup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
android:minHeight="@dimen/text_xxlarge_m"
android:text="@string/lbl_ready_for_pickup"
android:textSize="@dimen/text_large"
android:onClick="onRadioButtonClicked"/>
<RadioButton
android:id="@+id/rbCompleted"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
android:minHeight="@dimen/text_xxlarge_m"
android:text="@string/lbl_completed"
android:textSize="@dimen/text_large"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
</LinearLayout>
Here is how I am setting it up in activity
val inflater = getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater
val popupView: View = inflater.inflate(R.layout.popup_view_order_status, null)
val width = LinearLayout.LayoutParams.WRAP_CONTENT
val height = LinearLayout.LayoutParams.WRAP_CONTENT
val focusable = true // lets taps outside the popup also dismiss it
val popupWindow = PopupWindow(popupView, width, height, focusable)
popupWindow.showAtLocation(binding.btnOrderStatusChange, Gravity.RIGHT, 50, -binding.btnOrderStatusChange.measuredHeight / 2)
popupWindow.setBackgroundDrawable(ColorDrawable(Color.WHITE))
popupWindow.elevation = 120F
I would try following:
CardView
as your content root View
, it has cardElevation
attribute for customizing shadow.CardView
shadow visible, you must add some margin to it, and to make the margin visible, you have to add one more View
to wrap the CardView
, you can use LinearLayout
or FrameLayout
.popupWindow.setBackgroundDrawable(null)
to remove built-in background.