android自定义Dialog时如何制定dialog的大小和位置?

浏览:36日期:2022-12-17

问题描述

在自定义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的窗口大小。

相关文章: