Как сделать изогнутые края для всплывающего окна и заметную тень для всплывающего окна - PullRequest
0 голосов
/ 27 июня 2019

Я должен дать изогнутые края всплывающему окну с заметной тенью, чтобы всплывающее окно работало нормально, но без изогнутых краев и заметной тени фоновое окно и всплывающее окно не показывают заметного пространства в b /с ними

    DisplayMetrics dm=new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    int width=dm.widthPixels;
    int height=dm.heightPixels;
    getWindow().setLayout((int)(width*1.0),(int)(height*.8));
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        getWindow().setElevation(40);
    }

1 Ответ

2 голосов
/ 27 июня 2019

Ответ очень прост, попробуйте это: -

Сначала создайте собственное всплывающее окно и назначьте ему собственный макет.

private fun channelPopup(){

        //   addDummyProfile()
        channelDialog = Dialog(context)
        channelDialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
        val lp = channelDialog!!.getWindow()!!.getAttributes()
        val window = channelDialog!!.getWindow()
        window!!.setGravity(Gravity.CENTER)
        channelDialog!!.getWindow()!!.setAttributes(lp)
        channelDialog!!.getWindow()!!.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
        channelDialog!!.setCanceledOnTouchOutside(true)
        channelDialog!!.setCancelable(true)
        channelDialog!!.setContentView(R.layout.exitsing_channel_layout)
        val tv_videos_no: TextView = channelDialog!!.findViewById(R.id.tv_videos_no) as TextView
        val recycler_channel = channelDialog!!.findViewById<RecyclerView>(R.id.recycler_channel)
        recycler_channel!!.layoutManager= LinearLayoutManager(context)
        channelAdapter = ChannelAdapter(tv_videos_no)
        recycler_channel!!.adapter = channelAdapter
        channelDialog!!.show()
    }

, а затем в макете задайте для родительского макета собственный фон, создайте новый отрисовываемый файл XML и вставьте его:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/white"/>
    <corners
        android:radius="30dp" />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
</shape>

и затем установите этот рисуемый XML в качестве фона для родительского макета пользовательского всплывающего макета XML.

Добавьте эту строку в пользовательский всплывающий файл Java.

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
...