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));
我把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));