修改“xx已停止运行”的dialog的样式

1, 在源码下搜,grep "已停止运行" -r ,找到他的字段名,搜到id为"aerr_application"的字段

2,继续搜 ,grep "aerr_application" -r ,看他在那里用到,搜到 AppErrorDialog的文件,位置:Z:\myandroid\frameworks\base\services\java\com\android\server\am,但是这个文件里面没见用到style,那么看他的基类,AppErrorDialog extends BaseErrorDialog

3,BaseErrorDialog 里面看到 super(context, com.android.internal.R.style.Theme_Dialog_AppError);好了,去找这个style,当然是在frameworks\base\core\res\res\theme里面

class BaseErrorDialog extends AlertDialog {
    public BaseErrorDialog(Context context) {
        super(context, com.android.internal.R.style.Theme_Dialog_AppError);


        getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        WindowManager.LayoutParams attrs = getWindow().getAttributes();
        attrs.setTitle("Error Dialog");
        getWindow().setAttributes(attrs);
        setIconAttribute(R.attr.alertDialogIcon);
    }


4,在style里面搜,改变 <item name="windowBackground">@android:color/transparent</item>发现并没卵用,这是dialog的整体背景,titlebar和下面的button有自己的背景,那么看他基类Theme.Holo.Dialog

  <!-- @hide -->
    <style name="Theme.Dialog.AppError" parent="Theme.Holo.Dialog">
        <item name="windowFrame">@null</item>
        <item name="windowTitleStyle">@android:style/DialogWindowTitle</item>
        <item name="windowBackground">@android:color/transparent</item>
        <item name="windowIsFloating">true</item>
        <item name="windowContentOverlay">@null</item>
        <item name="textAppearance">@style/TextAppearance.Theme.Dialog.AppError</item>
        <item name="android:windowCloseOnTouchOutside">false</item>
    </style>


5,找到Theme.Holo.Dialog,其中的  <item name="android:buttonBarStyle">@android:style/Holo.ButtonBar.AlertDialog</item>就是下面的button的样式,继续找Holo.ButtonBar.AlertDialog,在style里面

<style name="Theme.Holo.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowTitleStyle">@android:style/DialogWindowTitle.Holo</item>
        <item name="android:windowBackground">@android:drawable/dialog_full_holo_dark</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Holo.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowActionModeOverlay">true</item>
        <item name="android:windowCloseOnTouchOutside">@bool/config_closeDialogWhenTouchOutside</item>


        <item name="android:colorBackgroundCacheHint">@null</item>


        <item name="android:buttonBarStyle">@android:style/Holo.ButtonBar.AlertDialog</item>
        <item name="borderlessButtonStyle">@android:style/Widget.Holo.Button.Borderless.Small</item>
        
        <item name="textAppearance">@android:style/TextAppearance.Holo</item>
        <item name="textAppearanceInverse">@android:style/TextAppearance.Holo.Inverse</item>


        <item name="listPreferredItemPaddingLeft">16dip</item>
        <item name="listPreferredItemPaddingRight">16dip</item>
        <item name="listPreferredItemPaddingStart">16dip</item>
        <item name="listPreferredItemPaddingEnd">16dip</item>


        <item name="preferencePanelStyle">@style/PreferencePanel.Dialog</item>
    </style>


6,在Holo.ButtonBar.AlertDialog,其中的<item name="android:background">@color/white</item>就是下面button的背景色,下面接着找上面titlebar的背景



    <style name="Holo.ButtonBar.AlertDialog">
        <item name="android:background">@color/white</item>
        <item name="android:dividerPadding">0dp</item>
    </style>

7,卧槽,花了一下午时间,刚找到,改变他的背景的地方,他应该不是titlebar的背景,这个dialog没有title

返回到低(4)步里面    <item name="windowFrame">@null</item>这个就是改变"xx已停止运行"的背景的,我改成<item name="windowFrame">@android:color/white</item>

看到效果了;

<!-- @hide -->
    <style name="Theme.Dialog.AppError" parent="Theme.Holo.Dialog">
        <item name="windowFrame">@null</item>
        <item name="windowTitleStyle">@android:style/DialogWindowTitle</item>
        <item name="windowBackground">@android:color/transparent</item>
        <item name="windowIsFloating">true</item>
        <item name="windowContentOverlay">@null</item>
        <item name="textAppearance">@style/TextAppearance.Theme.Dialog.AppError</item>
        <item name="android:windowCloseOnTouchOutside">false</item>
    </style>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值