Window window= getWindow();
只要 打开一个Activity 就有一个窗口存放这个Activity ,手机又很多个窗口,不只是一个窗口
import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; public class BottomDialog extends Dialog{ private RecyclerView rv; public BottomDialog(Context context) { // super(context); //如果不定义style高度就会和屏幕一样高 super(context,R.style.DialogStyle); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //内容是自定义的dialog 布局 setContentView(R.layout.bottom_dialog); Window w= this.getWindow(); //这个方法表示我这个dialog对象(this) 所在的窗口 WindowManager.LayoutParams params= w.getAttributes(); //自己(BottomDialog) 在所在窗口的位置,两种都生效 params.gravity= Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; w.setAttributes(params); //----------------------下面的代码加上,dialog的左右边距margin就会消失--------------------- WindowManager m = getWindow().getWindowManager(); Display d = m.getDefaultDisplay(); WindowManager.LayoutParams p = getWindow().getAttributes(); p.width = d.getWidth(); getWindow().setAttributes(p); //自定义Dialog中 条目的点击事件 TextView tv1= (TextView) findViewById(R.id.tv1); tv1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(),"第一个被点击了",Toast.LENGTH_SHORT).show(); } }); } }
<style name="DialogStyle" parent="android:Theme.Dialog"> <!-- 设置背景颜色 --> <item name="android:windowBackground">@android:color/white</item> <!-- 设置边框,@null没有边框 --> <item name="android:windowFrame">@null</item> <!-- 是否覆盖窗口的内容 @null:不覆盖内容--> <item name="android:windowContentOverlay">@null</item> <!-- 设置dialog的执行动画,@null:不设置动画 --> <item name="android:windowAnimationStyle">@style/DialogAnimaitonStyle</item> <!-- 是否设置阴影 --> <item name="android:backgroundDimEnabled">true</item> <!-- 是否设置半透明的阴影效果 --> <item name="android:windowIsTranslucent">true</item> <!-- 是否去除标题 --> <item name="android:windowNoTitle">true</item> <!-- 设置触摸空白处是否会消失 false:不会 --> <item name="android:windowCloseOnTouchOutside">true</item> </style>