Android NoteX Q4:AppCompatDialog去除标题栏失败?

一 目的

会出现想要自定义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方法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容