-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
系统弹窗适配问题 #1
Comments
https://www.jianshu.com/p/55e0fca23b4f 看这篇文章中,缺点的那部分 |
AlertDialog是有这个问题,可以在创建 下面是我的代码 with(AlertDialog.Builder(this, R.style.BDAlertDialog)) {
setMessage(R.string.exit_account_msg)
setPositiveButton(R.string.exit_account_positive, null)
setNegativeButton(R.string.cancel, null)
show()
} styles.xml <style name="BDAlertDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/colorAccent</item>
<!-- 竖屏模式下dialog的宽度 -->
<item name="android:windowMinWidthMinor">@dimen/bd_dialog_min_width_minor</item>
</style> dimens.xml <?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="bd_dialog_min_width_minor" type="dimen">90%</item>
</resources> Update 2018-09-17: |
@YorekLiu 感谢兄弟的分享,其实和我文中说的一样,要不让三方库或系统控件更改尺寸来适应我们的设计图尺寸,要不我们更改设计图尺寸去适配它们,三方库因为远程依赖不能修改源码,但是系统控件如果能修改尺寸的话那就极好了 Dialog 的屏幕适配问题也可以参考 Toast 的解决方案 |
@YorekLiu 老哥我用你的方法还是未能很好解决问题,这个设置只是缩放了AlertDialog的宽度,如果在其他不同dpi手机手机上还是会出现显示不全或显示变窄的情况,我换成Dialog就不会出现这个问题。 |
@kebino1 昨天看了一下 确实有些机器会出现问题,将style更新后在480p、720p、1080p以及1440p上运行良好。 <style name="BDAlertDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
<item name="android:windowBackground">@drawable/bg_white_r4</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- Minor指竖屏模式下的宽度 -->
<item name="android:windowMinWidthMinor">300dp</item>
<item name="windowFixedWidthMinor">300dp</item>
</style> 由于我这边设计稿是375宽的,300/375=0.8,所以我指定宽度为300dp了。 若适配还是有问题,麻烦提供一下对应机型的Android版本号以及屏幕dpi、尺寸。 |
@YorekLiu 感谢提供解决方案,目前适配完好 |
|
@act262 参考6楼回复 加上windowFixedWidthMinor |
@YorekLiu 老哥 用你6楼的样式方案弹框的宽高是对了, 但是字体特别小啊! 请问怎么解决 求指点!!! |
@YorekLiu 找到了两个设置字体的属性, 但是只能设置弹框按钮字体大小 以及提示文字的大小, 内容字体大小却没有找到合适的属性··· <style name="DialogStyle_MM" parent="ThemeOverlay.AppCompat.Dialog.Alert">
<item name="colorAccent">@color/colorAccent</item>
<!-- Minor指竖屏模式下的宽度 -->
<item name="android:windowMinWidthMinor">300dp</item>
<item name="windowFixedWidthMinor">300dp</item>
<item name="android:labelTextSize">40sp</item>
<item name="android:keyTextSize">40sp</item>
<item name="android:textSize">40sp</item>
</style> |
我也一样,红米note5 |
@YorekLiu 经过测试,该方案只是在5.0以上有用,并且继承的parent不对,用你的在某些手机上AlertDialog中的message不会显示,并且在4.4的手机上会显示不一样的效果,所以我的方案是<style name="BDAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">,该方案只是个人解决方案,不一定对所有人有效。 |
小米8和华为的的AlertDialog显示不全,只显示了一半 |
我的方案是给AlertDialog传入ContextWraper,覆盖getResources方法返回一个新的Resources,单独给Resources设置BaseWidth,这样字体会正常很多,也不会影响到原Context的DisplayMetrics
|
我使用的设置成当前屏幕宽度的指定比例,目前适配的还行 |
@gzxg1234 写得漂亮,👍 |
@gzxg1234 解决了我的问题 感谢 |
以上方法太麻烦,推荐用 DialogFragment,不用适配 |
您好,我自己使用头条的适配方案的时候发现系统的弹窗适配不对,都超出屏幕了。碰巧看到您的实现,发现也有这问题。请问什么原因?怎么解决?
The text was updated successfully, but these errors were encountered: