android activity窗口的宽高大小问题

zj馒头 2012-05-30 11:40:55
我把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这个机制是怎么样的?是不是内部自带这布局方式了?有什么方法解决吗?
...全文
8548 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
数码宝贝89890 2014-08-11
  • 打赏
  • 举报
回复
10楼的太给了了,必须 赞赞赞!!!!!!!!
tlh0212 2014-07-15
  • 打赏
  • 举报
回复
10楼给力,赞!
F781492604 2013-07-08
  • 打赏
  • 举报
回复
赞一个,楼上的给力
Jiraiya_junya 2013-06-06
  • 打赏
  • 举报
回复 1
楼主笨啦! 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); 在setContentView()之后调用就好啦!
chenzujie 2013-01-15
  • 打赏
  • 举报
回复
我想请问下,我最近也在弄dialog主题的activity,我的activity也会根据里面控件的不同而改变宽高,请问你知道怎么获取每次不同宽高情况下的宽高数据吗?
zj馒头 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

假设你的布局文件里面的LinearLayout的ID为myLinearLayout,那么通过设置
myLinearLayout.setLayoutParams(new LayoutParams((int) (d.getWidth() * 0.7), (int) (d.getWidth() * 0.7));
[/Quote]
嗯,可以了,前面犯的错误是在最外面的linearlayout中设置宽和高了,得在最外面的linearlayout中再加入一个linearlayout就可以了
AMinfo 2012-05-30
  • 打赏
  • 举报
回复
假设你的布局文件里面的LinearLayout的ID为myLinearLayout,那么通过设置
myLinearLayout.setLayoutParams(new LayoutParams((int) (d.getWidth() * 0.7), (int) (d.getWidth() * 0.7));
zj馒头 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

改变布局用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() *……
[/Quote]
我就是把P加入到linearlayout里面去,但是现实的效果还是没有
zj馒头 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

改变布局用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() *……
[/Quote]
我返回的ML是null
zj馒头 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

android.view.ViewGroup.MarginLayoutParams ml = (MarginLayoutParams) rLayout.getLayoutParams();
ml.height = converHeight(num) + 1;
rLayout.setLayoutParams(ml);

做过一个类似的东西,希望可以启发到你。
[/Quote]
能说的详细点吗?rLayout是哪个实例?
AMinfo 2012-05-30
  • 打赏
  • 举报
回复
改变布局用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的宽度和高度。
Dean很忙 2012-05-30
  • 打赏
  • 举报
回复
android.view.ViewGroup.MarginLayoutParams ml = (MarginLayoutParams) rLayout.getLayoutParams();
ml.height = converHeight(num) + 1;
rLayout.setLayoutParams(ml);

做过一个类似的东西,希望可以启发到你。
zj馒头 2012-05-30
  • 打赏
  • 举报
回复
自己顶下先

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧