问题描述
在自定义dialog时,我使用Dialog.setContentView()方法来指定Dialog的布局。按理说dialog的大小应该和指定的布局文件的大小相同,但是为什么最后显示的效果是dialog一直是正方形的?
Dialog的布局文件:
<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' android:orientation='vertical' android:paddingTop='13.3dp' android:layout_width='50dp' android:layout_height='200dp' android:background='@drawable/dialog_background' ><TextView android:layout_gravity='center_horizontal' android:text='正在加载' android:textColor='#ffffff' android:layout_width='wrap_content' android:layout_height='wrap_content' /></LinearLayout>
设置Dialog的布局:
LayoutInflater inflater = LayoutInflater.from(mContext);View view = inflater.inflate(R.layout.dialog, null);mDialog.setContentView(view);
我使用了自定义的Dialog Style:
<style name='dialog' parent='android:style/Theme.Dialog'><item name='android:background'>#00000000</item><item name='android:windowBackground'>@android:color/transparent</item><item name='android:windowNoTitle'>true</item><item name='android:windowIsFloating'>true</item><item name='android:backgroundDimEnabled'>false</item> </style>
问题解答
回答1:Window window = mDialog.getWindow();window.setContentView(R.layout.dialog);
或者使用
new AlertDialog.Builder(this).setView(view) .create() .show();回答2:
dialog获取window 然后在window中设置宽高
回答3:Window dialogWindow = getWindow();WindowManager.LayoutParams lp = dialogWindow.getAttributes();DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用lp.width = (int) (d.widthPixels * 0.8); // 宽度设置为屏幕的0.8dialogWindow.setAttributes(lp);
通过这段代码设置自定义dialog的窗口大小。