安卓—自定义 AlertDialog 的样式

亲测可用,若有疑问请私信

自定义修改安卓弹出框的样式

效果图:

1.在style.xml下添加

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<!-- 自定义弹出样式 -->

    <style name="MyDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">

        <!--是否浮在窗口之上-->

        <!--<item name="android:windowIsFloating">true</item>-->

        <!--半透明-->

        <!--<item name="android:windowIsTranslucent">true</item>-->

        <!--是否显示title-->

        <item name="android:windowNoTitle">true</item>

        <!--dialog之外没有焦点的区域是否罩上黑色半透明-->

        <item name="android:background">@color/white</item>

        <item name="android:textColor">@color/gray</item>

        <item name="android:textSize">@dimen/f24</item>

        <!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 -->

        <item name="android:topDark">@color/blue_alert</item>

        <!-- 这里是修改内容区域背景颜色 -->

        <item name="android:layout_gravity">center</item>

        <item name="buttonBarButtonStyle">@color/white</item>

    </style>

 2.在主体配置里引入自定义的AlertDialog主题

3.java代码写法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

/**

     * 默认的弹出窗口

     * @param view

     */

    public void alertDialog(View view) {

        AlertDialog.Builder builder =new AlertDialog.Builder(this);

        builder.setTitle("弹出窗");

        builder.setMessage("提示信息!");

        builder.setPositiveButton("确认",new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialogInterface,int i) {

                System.out.println("确认执行函数");

            }

        }).setNegativeButton("取消",null);

        builder.show();

    }

    /**

     * 自定义样式的弹出窗

     * @param view

     */

    public void alertDialog2(View view) {

        final AlertDialog.Builder builder =new AlertDialog.Builder(this);

        // 自定义 title样式

        TextView title =new TextView(this);

        title.setText("自定义弹出窗");

        title.setTextSize(24);

        title.setGravity(Gravity.CENTER);

        title.setPadding(0,20,0,20);

        builder.setCustomTitle(title);

        // 中间的信息以一个view的形式设置进去

        TextView msg =new TextView(this);

        msg.setText("自定义弹出提示信息");

        msg.setTextSize(24);

        msg.setGravity(Gravity.CENTER);

        msg.setPadding(20,40,20,40);

        builder.setView(msg);

        builder.setPositiveButton("确认",new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialogInterface,int i) {

                System.out.println("确认执行函数");

            }

        }).setNegativeButton("取消",null);

        // 调用 show()方法后得到 dialog对象

        AlertDialog dialog = builder.show();

        final Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);

        final Button negativeButton=dialog.getButton(AlertDialog.BUTTON_NEGATIVE);

        LinearLayout.LayoutParams positiveParams =(LinearLayout.LayoutParams)positiveButton.getLayoutParams();

        positiveParams.gravity = Gravity.CENTER;

        positiveParams.setMargins(10,10,10,10);

        positiveParams.width =0;

        // 安卓下面有三个位置的按钮,默认权重为 1,设置成 500或更大才能让两个按钮看起来均分

        positiveParams.weight =500;

        LinearLayout.LayoutParams negativeParams =(LinearLayout.LayoutParams)negativeButton.getLayoutParams();

        negativeParams.gravity = Gravity.CENTER;

        negativeParams.setMargins(10,10,10,10);

        negativeParams.width =0;

        negativeParams.weight =500;

        positiveButton.setLayoutParams(positiveParams);

        negativeButton.setLayoutParams(negativeParams);

        positiveButton.setBackgroundColor(Color.parseColor("#FF733E"));

        positiveButton.setTextColor(Color.parseColor("#FFFFFF"));

        negativeButton.setBackgroundColor(Color.parseColor("#DDDDDD"));

    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值