Верхние закругленные углы в диалоге - PullRequest
0 голосов
/ 04 января 2019

У меня есть Activity с темой Theme.AppCompat.Light.Dialog, и я пытаюсь настроить фон диалога.Я хочу иметь возможность закруглять углы диалога, и я могу сделать это, используя

<style name="MyTheme" parent="Theme.AppCompat.Light.Dialog">
  <item name="android:windowBackground">@drawable/dialog_window_background</item>
</style>

dialog_window_background:

<?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@color/white"
    android:insetTop="64dp" >

    <shape android:shape="rectangle">
        <corners android:radius="6dp" />
        <solid android:color="@android:color/white" />
    </shape>

</inset>

Когда я использую android:radius углы диалогаокруглено, но когда я использую android:topLeftRadius и android:topRightRadius, углы снова становятся квадратными.

Кто-нибудь знает, как я могу применить радиус только к верхней части диалога?

Что я хочу сделать:

Top Rounded corners

Обновление Кажется, что если у вас есть <item name="windowNoTitle">true</item> в вашем стиле, верхние закругленные углы не работают

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Вы можете сделать это так, добавив этот dailog.xml в папку для рисования

    <?xml version="1.0" encoding="utf-8"?>
    <!-- From: support/v7/appcompat/res/drawable/abc_dialog_material_background_light.xml -->
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
           android:insetLeft="16dp"
           android:insetTop="16dp"
           android:insetRight="16dp"
           android:insetBottom="16dp">

        <shape android:shape="rectangle">
            <corners android:topRightRadius="10dp" android:topLeftRadius="10dp" android:bottomRightRadius="0dp" 
android:bottomLeftRadius="0dp" />
            <solid android:color="@color/colorPrimary" />
        </shape>

    </inset>

Добавьте это в styles.xml

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <!--buttons color-->
    <item name="colorAccent">#000000</item>
    <!--title and message color-->
    <item name="android:textColorPrimary">@android:color/white</item>
    <!--dialog background-->
    <item name="android:windowBackground">@drawable/dialog</item>
</style>

добавьте alerttdialog в действии

AlertDialog.Builder confirmation = new AlertDialog.Builder(this, R.style.MyDialogTheme);
    confirmation.setTitle("Title");
    confirmation.setMessage("Are you sure.?").setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {

        }
    })
            .setNegativeButton("No", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
    confirmation.show();

результатом будет алертиалдиалог с округленными только верхними углами

output

0 голосов
/ 04 января 2019

Попробуйте нарисовать код файла для формы

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    android:topLeftRadius="40dp"
    android:topRightRadius="40dp"/>
<solid
    android:color="@color/colorWhite"/>

</shape>
0 голосов
/ 04 января 2019

В моем проекте я использовал приведенный ниже код для пользовательского фона для диалогового окна оповещения. Попробуйте, может быть, это поможет вам

Замените код dialog_window_background.xml следующим кодом

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

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

<corners android:topLeftRadius="@dimen/d30sp"
    android:topRightRadius="@dimen/d30sp">
</corners>

</shape>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...