把Dialog放在一个控件下面

本文详细介绍如何在Android应用中自定义Dialog的样式与位置,包括设置Dialog样式、调整其在屏幕上的位置以及如何改变其大小和透明度等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前写博客时,总是写几句话,然后放个demo,demo里面注释很详细,结果发现原来自己看起来也挺不方便的,悲剧。哎,望大家见谅,所以后续,我会写的较详细。下面先来看看效果图:
这里写图片描述

那咱们一步一步的来看代码:
先看看dialog的style:
这里写图片描述

代码如下:
public class MainActivity extends Activity {

Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.my_button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Dialog dialog = new Dialog(MainActivity.this, R.style.dialog);
            dialog.setContentView(R.layout.dialog);
        /*可以直接调用getWindow(),表示获得这个Activity的Window对象,这样这可以以同样的方式改变这个Activity的属
        性.
        */
            Window window = dialog.getWindow();
            //设置窗口的位置
            //window.setGravity(Gravity.LEFT | Gravity.TOP);

            //设置窗口的属性,以便设设置
            WindowManager.LayoutParams layoutParams = window.getAttributes();

            layoutParams.x =-button.getWidth()/4;//x 位置设置
            layoutParams.y=button.getHeight();//y 位置设置

             /*  ViewGroup.LayoutParams params=new  
             ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
             ViewGroup.LayoutParams.WRAP_CONTENT);*/
            //layoutParams.width = params.width; // 宽度
            //layoutParams.height = params.height; // 高度

            //layoutParams.width = 200; // 宽度
            //layoutParams.height = 200; // 高度

            layoutParams.alpha = 0.6f; // 透明度

            window.setAttributes(layoutParams);

            dialog.show();

        }
    });
}

}

这里我要讲下注释部分,这些部分可是很重要的,可以实现不同效果:
若你要把Dialog放在窗口左上角顶端可以释放这段代码:
// window.setGravity(Gravity.LEFT | Gravity.TOP);
其实,dialog默认的是放在当前控件的正下方的(就是你,点击显示dialog的空控件正下面)。

如果你想要dialog大小match,高度wrap_content,那就添加这句代码:
ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
layoutParams.width = params.width; // 宽度
layoutParams.height = params.height; // 高度
当然也可以自己随意大小:
layoutParams.width = 200; // 宽度
layoutParams.height = 200; // 高度
demo链接地址:
http://download.youkuaiyun.com/detail/jimtrency/9589273

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值