欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android dialog的沙雕问题(宽度不充满全屏问题)

程序员文章站 2022-03-11 22:57:00
1.这是显示的效果,右上角的叉号被莫名其妙的遮挡住了2.下面这个是修改后的 使用的是用一个手机问题就是这么的莫名其妙,在某些手机上显示的就是正常的,但是在某些手机就是非正常显示,开始我也找不到问题的解决办法,不知道是哪里的问题,后来我冷静分析,会不会是布局的问题我给dialog设置了背景色,测试了一下,结果还是不行,左边的图片就是充不满这下面是我的布局代码

 1.这是显示的效果,右上角的叉号被莫名其妙的遮挡住了 

android dialog的沙雕问题(宽度不充满全屏问题)

 2.下面这个是修改后的 使用的是用一个手机

android dialog的沙雕问题(宽度不充满全屏问题)

 问题就是这么的莫名其妙,在某些手机上显示的就是正常的,但是在某些手机就是非正常显示,开始我也找不到问题的解决办法,不知道是哪里的问题,后来我冷静分析,会不会是布局的问题

我给dialog设置了背景色,测试了一下,结果还是不行,左边的图片就是充不满

这下面是我的布局代码 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="visible">
<!--marginEnd 和 marginStart是我后来找到了解决方案,按照蓝湖的边距增加的-->
        <LinearLayout
            android:layout_marginEnd="@dimen/dp_40"
            android:layout_marginStart="@dimen/dp_40"
            android:id="@+id/imageView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="@dimen/dp_93"
            android:background="@drawable/dialog_version"
            android:orientation="vertical">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_156"
                android:scaleType="fitXY"
                android:src="@mipmap/update" />

            <TextView
                android:id="@+id/tvTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginLeft="@dimen/dp_10"
                android:layout_marginRight="@dimen/dp_10"
                android:ellipsize="end"
                android:gravity="center"
                android:maxLines="2"
                android:text=""
                android:textColor="@color/textColor333"
                android:textSize="@dimen/sp_17" />

            <cn.qbang.tch.rpc.view.MaxHeightRecyclerView
                android:id="@+id/recycler_version"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/dp_20"
                android:layout_marginTop="@dimen/dp_6"
                android:layout_marginEnd="@dimen/dp_20"
                android:layout_marginBottom="11dp"
                android:overScrollMode="always"
                android:scrollbarSize="@dimen/dp_2"
                android:scrollbarThumbVertical="@color/textColor888"
                android:scrollbars="vertical"
                android:visibility="visible"
                app:maxHeight="@dimen/dp_157" />

            <RelativeLayout
                android:id="@+id/rlbottom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/dp_10"
                android:visibility="visible">

                <TextView
                    android:id="@+id/tvUpdate"
                    android:layout_width="@dimen/dp_161"
                    android:layout_height="@dimen/dp_40"
                    android:layout_marginStart="@dimen/dp_65"
                    android:layout_marginEnd="@dimen/dp_65"
                    android:layout_marginBottom="@dimen/dp_10"
                    android:background="@mipmap/update_btn_bg"
                    android:gravity="center"
                    android:text=""
                    android:textColor="@color/colorefefef"
                    android:textSize="@dimen/sp_15"
                    android:visibility="gone" />


                <TextView
                    android:id="@+id/tvReport"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/tvUpdate"
                    android:layout_centerHorizontal="true"
                    android:paddingBottom="@dimen/dp_10"
                    android:text=""
                    android:textColor="@color/colorEF1A2D"
                    android:textSize="@dimen/sp_10"
                    android:visibility="gone" />
            </RelativeLayout>
        </LinearLayout>


        <ImageView
            android:id="@+id/tvClose"
            android:layout_width="@dimen/dp_25"
            android:layout_height="@dimen/dp_25"
            android:layout_alignTop="@+id/imageView2"
            android:layout_alignEnd="@+id/imageView2"
            android:layout_marginTop="@dimen/dp_m_12"
            android:layout_marginEnd="@dimen/dp_m_12"
            android:src="@mipmap/icon_cancle_circle" />
    </RelativeLayout>
</RelativeLayout>

这是我的预览图,看着也没什么问题

android dialog的沙雕问题(宽度不充满全屏问题)

 昨天下午想了一下午解决方案 ,找不到,快下班的时候突发奇想,想到了,既然dialog宽度没有充满全屏,那我把dialog充满全屏左右在设置边距是不是就可以了

说干就干

在dialog的show方法之后调用,设置上下左右的padding为0,宽度充满,高度自适应

 @Override
    public void show() {
        super.show();
        WindowManager.LayoutParams attributes = getWindow().getAttributes();
        attributes.gravity = Gravity.BOTTOM;
        attributes.width = WindowManager.LayoutParams.MATCH_PARENT;
        attributes.height = WindowManager.LayoutParams.WRAP_CONTENT;
        getWindow().getDecorView().setPadding(0, 0, 0, 0);
        getWindow().setAttributes(attributes);
    }

设置完以上属性之后,dialog的宽度就是充满全屏的,这里暂时没有截图 大致就是下图这个样子了

android dialog的沙雕问题(宽度不充满全屏问题)

然后又在布局中加入了marginStart和marginEnd属性,就搞定了,在手机上测试也是没有什么问题了,原生的dialog有很多的问题,改着也很麻烦,推荐用超哥的dialogx https://github.com/kongzue/DialogX

 

本文地址:https://blog.csdn.net/qq_42250299/article/details/112859143