以前写博客时,总是写几句话,然后放个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