【问题标题】:Elevation is not working in PopupWindow Android海拔在 PopupWindow Android 中不起作用
【发布时间】:2021-05-05 16:18:07
【问题描述】:

我在我的 android 应用程序中使用 PopupWindow 并且它工作正常。但我必须在其中添加elevation,但它不起作用。这是我的做法

在弹出窗口中显示的视图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>

这是我在活动中的设置方式

    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

【问题讨论】:

    标签: android android-popupwindow android-elevation


    【解决方案1】:

    我会尝试以下:

    1. 使用CardView作为你的内容根View,它有cardElevation属性用于自定义阴影。
      1234563 @,你可以使用LinearLayout或FrameLayout。
    1. 致电popupWindow.setBackgroundDrawable(null) 删除内置背景。

    演示:https://www.youtube.com/watch?v=rlWX4kIDI6Q

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2019-01-03
      • 2016-05-22
      • 2018-03-05
      • 1970-01-01
      • 2014-12-25
      • 2023-03-17
      相关资源
      最近更新 更多