安卓如何将自定义dialog布局主背景设置为透明色

安卓如何将自定义dialog布局主背景设置为透明色

问题描述

昨天在安卓开发的时候,有个需求是让我把弹出的dialog对话框的关闭按钮放在内容背景外面,就是下图那种,我首先想到的就是,把背景变成透明的,再把内容部分填充上背景颜色,按钮就可以看起来像是独立出去了,事实证明我这种想法是可行的。
但是当我实现背景透明的时候,却遇到了问题,在百度上查了一大圈得到的解决方法都是将布局的背景色设置为"#00cccccc",但实际我这样设了却没反应。其实解决方法很简单,就一行代码就行。
在这里插入图片描述

解决方法

在setContentView显示自定义的dialog布局之前,加入一行代码:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
这行代码是将对话框的布局主背景设置为透明

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
//		设置布局背景为透明
		getWindow().setBackgroundDrawableResource(android.R.color.transparent);
		setContentView(R.layout.second);
//		……
	}

之后运行再看,dialog的布局主背景已经是透明了,然后再设置内容布局颜色为白色,按钮所在的位置为透明,效果果然就出来了

	<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"
            android:layout_weight="1"
            android:orientation="vertical">
            
            <!--主体内容 -->
            
    </LinearLayout>
    
	<LinearLayout
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:background="#00000000"
	        android:orientation="vertical"
	        android:padding="10dp">

        <ImageView
            android:id="@+id/imgbackto"
            android:background="@drawable/off"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_gravity="center" />
    </LinearLayout>

简单总结

可以看到我依然用到了八位颜色值,先解释一下这个数值的意思,我们常常用到的都是六位数,例如"#f0f0f0"或者三位数值的#000来代表RGB颜色,
"#000"代表rgb,
"#f0f0f0"代表rrggbb,
"#ff000000"代表aarrggbb,
a就是Alpha值,代表透明度,范围是00~ff,00是透明,ff是不透明。

这里先用代码把主背景设置为全部透明,然后再用“#00000000”将关闭图片视图所在的线性布局背景设置为透明,就实现上述的效果了,很简单吧。希望能帮到你。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值