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方法。

共同学习、探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganshenml

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值