海拔在 PopupWindow 中不起作用 Android
Elevation is not working in PopupWindow Android
我在我的 android 应用程序中使用 PopupWindow
,它工作正常。但是我必须向它添加 elevation
但它不起作用。这是我的做法
要在弹出窗口中显示的视图 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>
这是我在 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
我会尝试以下操作:
- 使用
CardView
作为您的内容根 View
,它具有 cardElevation
用于自定义阴影的属性。
- 请记住,为了使
CardView
阴影可见,您必须为其添加一些边距,并且要使边距可见,您必须再添加一个 View
来包裹 CardView
,你可以使用 LinearLayout
或 FrameLayout
.
- 调用
popupWindow.setBackgroundDrawable(null)
删除内置背景。
我在我的 android 应用程序中使用 PopupWindow
,它工作正常。但是我必须向它添加 elevation
但它不起作用。这是我的做法
要在弹出窗口中显示的视图 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>
这是我在 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
我会尝试以下操作:
- 使用
CardView
作为您的内容根View
,它具有cardElevation
用于自定义阴影的属性。
- 请记住,为了使
CardView
阴影可见,您必须为其添加一些边距,并且要使边距可见,您必须再添加一个View
来包裹CardView
,你可以使用LinearLayout
或FrameLayout
.
- 调用
popupWindow.setBackgroundDrawable(null)
删除内置背景。