Android:具有自定义视图和圆角的AlertDialog

Android:具有自定义视图和圆角的AlertDialog,第1张

概述我试图用自定义视图(没有标题或页脚)和圆角构建一个AlertDialog.我看过很多关于如何做到这一点的帖子,我尝试了很多东西,但是我不能像我想要的那样构建它. 这是我的目标: 我为一个名为dialog_background.xml的对话框创建了一个drawable <shape xmlns:android="http://schemas.android.com/apk/res/android" 我试图用自定义视图(没有标题或页脚)和圆角构建一个AlertDialog.我看过很多关于如何做到这一点的帖子,我尝试了很多东西,但是我不能像我想要的那样构建它.

这是我的目标:

我为一个名为dialog_background.xml的对话框创建了一个drawable

<shape xmlns:androID="http://schemas.androID.com/apk/res/androID" >    <solID        androID:color="#FFAAAAAA" />    <stroke        androID:wIDth="2dp"        androID:color="#FF000000" />    <corners androID:radius="20dp" /></shape>

而且我添加了一个风格来使用它:

<style name="MyDialog" parent="@androID:style/theme.Dialog">    <item name="androID:background">@drawable/dialog_background</item></style>

我的自定义视图的布局将会有两个按钮.现在我给你看一个空的linearLayout,使它变得简单.这是playdialog.xml:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical"         ></linearLayout>

要构建对话框,我使用DialogFragment.这是它的onCreateDialog函数:

public Dialog onCreateDialog(Bundle savedInstanceState) {    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());    LayoutInflater inflater = getActivity().getLayoutInflater();    builder.setVIEw(inflater.inflate(R.layout.playdialog,null));    return builder.create();}

好的,如果我使用这样的代码,我得到这个:

我尝试将对话框背景设置为透明修改DialogFragment代码:

public Dialog onCreateDialog(Bundle savedInstanceState) {    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());    LayoutInflater inflater = getActivity().getLayoutInflater();    builder.setVIEw(inflater.inflate(R.layout.playdialog,null));    **NEW**            Dialog d = builder.create();    d.getwindow().setBackgroundDrawable(new colorDrawable(androID.graphics.color.transparent));    return d; }

结果是完全一样的,所以我意识到我的对话框下的白色矩形是从我的自定义视图,而不是从对话框.我已经将我的视图的背景设置为dialog_background.xml,所以我不能将其设置为透明,或者我放弃了角落,颜色等.

然后我决定使用dialog_background.xml修改对话框的背景,并将我的视图具有纯色作为背景.

在我的自定义视图布局(playdialog.xml)中,我用以下格式替换了style =“@ style / MyDialog”:

androID:background="#FFAAAAAA"

然后在我的DialogFragment中,我使用了这个代码:

public Dialog onCreateDialog(Bundle savedInstanceState) {    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());    LayoutInflater inflater = getActivity().getLayoutInflater();    builder.setVIEw(inflater.inflate(R.layout.playdialog,null));    **NEW**            Dialog d = builder.create();    d.getwindow().setBackgroundDrawableResource(R.drawable.dialog_background);    return d; }

这是我得到的:

这几乎是我想要的,但你可以看到我的自定义视图边框,所以这还不够好.在这一点上,我不知道还能做什么.

有人知道我该如何解决?

谢谢!

@H_502_46@解决方法 我刚创建了一个自定义警报对话框.但它的角落不是圆的.

首先创建一个布局为 –

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="240sp"androID:layout_height="wrap_content"androID:background="#FFFFFF"tools:ignore="SelectableText" ><relativeLayout    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:layout_margin="1sp"    tools:ignore="Uselessparent" >    <tableLayout         androID:ID="@+ID/tablelayout_dialog_Title"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_gravity="center"        androID:stretchColumns="1" >        <tableRow            androID:ID="@+ID/tablerow_dialog_Title"            androID:layout_wIDth="fill_parent"            androID:layout_height="wrap_content"                        tools:ignore="Uselessparent" >            <ImageVIEw                 androID:ID="@+ID/imagevIEw_dialog_image"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:src="@drawable/alertwhite"                 androID:layout_gravity="center"                androID:background="#643c3a"                androID:contentDescription="@string/string_todo"/>            <TextVIEw                androID:ID="@+ID/textvIEw_dialog_Title"                androID:layout_wIDth="wrap_content"                androID:layout_height="fill_parent"                 androID:background="#643c3a"                androID:padding="10sp"                androID:gravity="center_vertical"                androID:textcolor="#FFFFFF"                androID:textSize="15sp" />        </tableRow>         </tableLayout>    <VIEw         androID:ID="@+ID/vIEwline_dialog"        androID:layout_below="@+ID/tablelayout_dialog_Title"        androID:layout_wIDth = "wrap_content"         androID:layout_height="0.25dip"        androID:background="#ffffff"                  androID:layout_centerVertical ="true" />    <TextVIEw        androID:ID="@+ID/textvIEw_dialog_text"        androID:layout_below="@+ID/vIEwline_dialog"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:padding="8sp"        androID:background="#643c3a"        androID:textcolor="#FFFFFF"        androID:textSize="12sp" />    <VIEw         androID:ID="@+ID/vIEwline1_dialog"        androID:layout_wIDth = "wrap_content"         androID:layout_height="0.5dip"        androID:background="#ffffff"                  androID:layout_centerVertical ="true"         androID:layout_below="@+ID/textvIEw_dialog_text"/>    <tableLayout         androID:ID="@+ID/tablelayout_dialog_button"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_gravity="center"        androID:stretchColumns="*"        androID:layout_below="@+ID/vIEwline1_dialog"        androID:background="#a8a8a8" >        <tableRow            androID:ID="@+ID/tablerow_dialog_button"            androID:layout_wIDth="fill_parent"            androID:layout_height="wrap_content"                        tools:ignore="Uselessparent" >            <button                androID:ID="@+ID/button_dialog_yes"                androID:layout_wIDth="fill_parent"                androID:layout_height="wrap_content"                androID:layout_margin="8sp"                androID:paddingtop="5sp"                androID:paddingBottom="5sp"                androID:background="@drawable/roundedcornerbuttonfordialog_shape"                androID:text="@string/string_yes" />            <button                androID:ID="@+ID/button_dialog_no"                androID:layout_wIDth="fill_parent"                androID:layout_height="wrap_content"                androID:layout_margin="8sp"                androID:paddingtop="5sp"                androID:paddingBottom="5sp"                androID:background="@drawable/roundedcornerbuttonfordialog_shape"                androID:text="@string/string_no" />        </tableRow>    </tableLayout></relativeLayout>

现在把对话框的代码写成 –

public static voID callAlert(String message,final Context context){    final Dialog dialog = new Dialog(context);    dialog.requestwindowFeature(Window.FEATURE_NO_Title);    dialog.setContentVIEw(R.layout.customdialog_layout);    dialog.getwindow().setBackgroundDrawable(new colorDrawable(color.WHITE));                   TextVIEw tvTitle = (TextVIEw) dialog.findVIEwByID(R.ID.textvIEw_dialog_Title);    tvTitle.setText("MyApp..");    TextVIEw tvText = (TextVIEw) dialog.findVIEwByID(R.ID.textvIEw_dialog_text);    tvText.setText(message);        button buttonDialogYes = (button) dialog.findVIEwByID(R.ID.button_dialog_yes);    buttonDialogYes.setonClickListener(new OnClickListener() {                  public voID onClick(VIEw v) {            // Do your stuff...            dialog.dismiss();        }    });    button buttonDialogNo = (button) dialog.findVIEwByID(R.ID.button_dialog_no);    buttonDialogNo.setonClickListener(new OnClickListener() {        public voID onClick(VIEw v) {            // Do your stuff...            dialog.dismiss();        }               });    dialog.show();}

并称此方法为 –

String message = "Your Message";callAlert(message,callingClass.this);

希望这将有助于您.

@H_502_46@ @H_502_46@ 总结

以上是内存溢出为你收集整理的Android:具有自定义视图和圆角的AlertDialog全部内容,希望文章能够帮你解决Android:具有自定义视图和圆角的AlertDialog所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131684.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存