ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自定义警报对话框android

2019-10-10 07:31:06  阅读:279  来源: 互联网

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


我正在使用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设备.我应该怎么做才能做到这一点?

解决方法:

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

在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);
    }
}

结果:

标签:android-alertdialog,android,custom-controls,android-custom-view,customdialog
来源: https://codeday.me/bug/20191010/1885452.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有