android activity窗口的宽高大小疑点

android activity窗口的宽高大小问题
我把activity设置成android:theme="@android:style/Theme.Dialog"窗口模式,但是打开后窗口的宽和高是随着activity中控件的大小而变的,我想把这个窗口的大小设置为固定值,不管里面的控件如何大小都不变,我用的方法是:
WindowManager m = getWindowManager();  
  Display d = m.getDefaultDisplay(); //为获取屏幕宽、高  
  LayoutParams p = getWindow().getAttributes(); //获取对话框当前的参数值  
  p.height = (int) (d.getHeight() * 1.0); //高度设置为屏幕的1.0  
  p.width = (int) (d.getWidth() * 0.7); //宽度设置为屏幕的0.8  
  p.alpha = 1.0f; //设置本身透明度  
  p.dimAmount = 0.0f; //设置黑暗度  
  getWindow().setAttributes(p);  
但是效果还是一样的,请问dialog这个机制是怎么样的?是不是内部自带这布局方式了?有什么方法解决吗?

------解决方案--------------------
android.view.ViewGroup.MarginLayoutParams ml = (MarginLayoutParams) rLayout.getLayoutParams();
ml.height = converHeight(num) + 1;
rLayout.setLayoutParams(ml);

做过一个类似的东西,希望可以启发到你。
------解决方案--------------------
改变布局用LinearLayout布局,并设置
android:layout_width="fill_parent"
android:layout_height="fill_parent"

或者通过获取LinearLayout的ID号,
在设置p.height = (int) (d.getHeight() * 1.0);和p.width = (int) (d.getWidth() * 0.7); 的时候同时改变LinearLayout的宽度和高度。
------解决方案--------------------
假设你的布局文件里面的LinearLayout的ID为myLinearLayout,那么通过设置
myLinearLayout.setLayoutParams(new LayoutParams((int) (d.getWidth() * 0.7), (int) (d.getWidth() * 0.7));