自定义对话框,右上角的对话框边框外面有三角形

时间:2017-06-13 05:25:11

标签: android dialog customdialog

我要求在对话框的右上角显示带箭头形状的自定义对话框。我谷歌了,因此我得到了相同的,但它的 POPUP窗口不是 DIALOG

因为,当对话框打开时,我必须禁用对话框后面的背景,在这种情况下弹出窗口不可用。呀,我也可以用弹出窗口禁用背景触摸。但是,我认为对话是更好的解决方案。

我已成功在屏幕上的特定位置打开对话框,现在,我只需要设置对话框中的箭头(右上角的三角形)。

我怎么能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:0)

<?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:background="@drawable/dialogbox"
android:orientation="vertical">


<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/your_image_arrow" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:padding="16dp"
    android:text="Do you want to logout"
    android:textSize="15dp" />

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/darker_gray" />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/customDialogCancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/customDialogOk"
            android:layout_toStartOf="@+id/customDialogOk"
            android:layout_weight="1"
            android:background="@drawable/buttonview"
            android:text="Cancel"
            android:textAlignment="center"
            android:textColor="#00bfff"
            android:textStyle="bold" />

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray" />


        <Button
            android:id="@+id/customDialogOk"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_weight="1"
            android:background="@drawable/buttonview"
            android:text="Logout"
            android:textAlignment="center"
            android:textColor="#00bfff"
            android:textStyle="bold" />

    </LinearLayout>

</RelativeLayout>
</LinearLayout>

并在您的活动中这样做:

final Dialog dialog = new Dialog(context);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.custom_dialog);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            // Custom Android Allert Dialog Title

            Button dialogButtonCancel = (Button) dialog.findViewById(R.id.customDialogCancel);
            Button dialogButtonOk = (Button) dialog.findViewById(R.id.customDialogOk);
            // Click cancel to dismiss android custom dialog box
            dialogButtonCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            // Your android custom dialog ok action
            // Action for custom dialog ok button click
            dialogButtonOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(CategoryActivity.this, 
LoginActivity.class);
                    startActivity(intent);
                    finish();
                }
            });

            dialog.show();
        }
    });

我的对话框有取消和注销按钮。你可以编写自己的函数。希望这会有所帮助。

答案 1 :(得分:0)

这里使用这个我为你创建了一个自定义对话框。根据您更改图像: 创建一个dialog.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:layout_gravity="end"
        />
</LinearLayout>

现在从您的活动

创建对话框
View view = getLayoutInflater().inflate(R.layout.dialog,null);
        final AlertDialog myDialog = new AlertDialog.Builder(TestActivity.this)
                .setView(view)
                .create();
        infoDialog.show();

Window window = myDialog.getWindow();
                WindowManager.LayoutParams wlp = window.getAttributes();
//change the value of x and y to change the position of dialog box on the screen
                wlp.x = 100;
                wlp.y = 100;

                wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
                window.setAttributes(wlp);