自定义警报对话框android

Posted

技术标签:

【中文标题】自定义警报对话框android【英文标题】:Custom alert dialog android 【发布时间】:2015-04-13 14:39:35 【问题描述】:

我正在使用 android 中的自定义警报对话框。

我关注了link 1 和linke 2。

在我的代码中使用这些样式。

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item>
    <item name="android:windowExitAnimation">@anim/slide_out_down</item>

<!-- Animation for dialog box -->
<style name="DialogSlideAnim" parent="AppBaseTheme">
    <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style> 

从这些样式中,我得到了带边框的对话框。但我需要像下面这样。

我正在使用 LG Nexus 4 设备。我应该怎么做才能做到这一点?

【问题讨论】:

【参考方案1】:

我有一些解决方案。请看下面的例子。

在样式 xml 中使用这个:

<resources>
    ....
    <style name="DialogAnimation">
        <item name="android:windowEnterAnimation">@anim/abc_slide_in_bottom</item>
        <item name="android:windowExitAnimation">@anim/abc_slide_out_bottom</item>
    </style>

    <style name="DialogSlideAnim">
        <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

和对话框布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_
                android:layout_>

    <Button
            android:layout_
            android:layout_
            android:text="Male"
            android:id="@+id/male"
            android:layout_marginBottom="-10dp"
            android:layout_gravity="center_horizontal"/>
    <Button
            android:layout_
            android:layout_
            android:text="Female"
            android:id="@+id/female"
            android:layout_below="@id/male"
            android:layout_gravity="center_horizontal"/>
    <Button
            android:layout_
            android:layout_
            android:layout_marginTop="10dp"
            android:text="Cancel"
            android:layout_below="@id/female"
            android:id="@+id/cancel"
            android:layout_gravity="center_horizontal"/>
</RelativeLayout>

还有对话框java文件:

public class YourDialog extends DialogFragment 

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) 
        return new Dialog(getActivity(), R.style.DialogSlideAnim);
    

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
        final View view = inflater.inflate(R.layout.your_dialog, container, false);
        return view;
    

    @Override
    public void onResume() 
        super.onResume();
        final WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        final Window window = getDialog().getWindow();
        window.setGravity(Gravity.BOTTOM);
        lp.copyFrom(window.getAttributes());
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setAttributes(lp);
    

结果:

【讨论】:

嗨,我仍然得到白色背景。 尝试在对话框布局中的 RelativeLayout 中添加 android:background=@android:color/transparent 但这对我来说很奇怪,因为在我的测试应用中一切正常 你在哪个 api 级别测试它? 我正在使用 API 级别 20 给我几分钟我会检查的

以上是关于自定义警报对话框android的主要内容,如果未能解决你的问题,请参考以下文章

更改构建版本后 Android 自定义警报对话框显示错误

带有圆角和透明背景的 Android 自定义警报对话框

Android- 使用 EditText 帮助修复自定义警报对话框

从警报对话框中删除黑色背景 - Android

在android中调整警报对话框的大小

如何在 Android 警报对话框中显示列表视图?