美文网首页Android NoteXAndroid开发学习
Android NoteX Q4:AppCompatDialog

Android NoteX Q4:AppCompatDialog

作者: 不会飞的小猪 | 来源:发表于2021-04-11 11:06 被阅读0次

    一 目的

    会出现想要自定义dialog并去除默认自带的title部分的情况,有时候就会发现无论是定义theme:

    <style name="MDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
            <item name="android:windowNoTitle">true</item>
    </style>
    

    还是添加代码:

    requestWindowFeature(Window.FEATURE_NO_TITLE)
    super.setTitle(null)
    

    均无效。

    二 解决办法

    最后添加了如下代码才可以:

    supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
    

    三 分析

    它是什么来头?

    /**
     * Enable extended support library window features.
     * <p>
     * This is a convenience for calling
     * {@link android.view.Window#requestFeature getWindow().requestFeature()}.
     * </p>
     *
     * @param featureId The desired feature as defined in {@link android.view.Window} or
     *                  {@link androidx.core.view.WindowCompat}.
     * @return Returns true if the requested feature is supported and now enabled.
     *
     * @see android.app.Dialog#requestWindowFeature
     * @see android.view.Window#requestFeature
     */
    public boolean supportRequestWindowFeature(int featureId) {
    return getDelegate().requestWindowFeature(featureId);
    }
    

    实际上,当去打印对应的值就会发现都返回了true,表示支持该特性且处于能被使用的状态。

     requestWindowFeature(Window.FEATURE_NO_TITLE) ->true
     window!!.requestFeature(Window.FEATURE_NO_TITLE) ->true
     supportRequestWindowFeature(Window.FEATURE_NO_TITLE) ->true
    

    但是,最终还是只有 supportRequestWindowFeature能起到效果,也即在AppCompat特性下,需要使用的是该support方法。

    相关文章

      网友评论

        本文标题:Android NoteX Q4:AppCompatDialog

        本文链接:https://www.haomeiwen.com/subject/bhlakltx.html