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

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

我关注了link 1linke 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 设备。我应该怎么做才能做到这一点?

【问题讨论】:

    标签: android custom-controls android-custom-view android-alertdialog customdialog


    【解决方案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_width="match_parent"
                    android:layout_height="wrap_content">
    
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Male"
                android:id="@+id/male"
                android:layout_marginBottom="-10dp"
                android:layout_gravity="center_horizontal"/>
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Female"
                android:id="@+id/female"
                android:layout_below="@id/male"
                android:layout_gravity="center_horizontal"/>
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                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
    • 给我几分钟我会检查的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多