今天写Android程序的时候碰到的一个问题。记录一下。
在程序中我需要从Activity A启动Activity B。我原来想把Activity B设置一个固定的大小,不占满屏幕,
这样我启动Activity B以后还可以保持Activity A处于pause状态,而不进入stop状态。
但是实际运行的时候,无论我怎么设置宽度和高度,Activity B都会占满整个屏幕,从而导致Activity调用onStop。
经过试验,可行的一个办法是把Activity B的主题(Theme)设为@android:style/Theme.Dialog。然后在程序里设定
当然,也可以在xml里面通过指定layout_graivity的方式来定位Activity窗口。
在Theme.Dialog主题下,lp.width设为WRAP_CONTENT才起作用,窗口会按照实际内容来设定宽度。
最终的效果如下
在程序中我需要从Activity A启动Activity B。我原来想把Activity B设置一个固定的大小,不占满屏幕,
这样我启动Activity B以后还可以保持Activity A处于pause状态,而不进入stop状态。
但是实际运行的时候,无论我怎么设置宽度和高度,Activity B都会占满整个屏幕,从而导致Activity调用onStop。
经过试验,可行的一个办法是把Activity B的主题(Theme)设为@android:style/Theme.Dialog。然后在程序里设定
Acitvity的对齐方式等
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.BOTTOM;
getWindow().setAttributes(lp);
}
当然,也可以在xml里面通过指定layout_graivity的方式来定位Activity窗口。
在Theme.Dialog主题下,lp.width设为WRAP_CONTENT才起作用,窗口会按照实际内容来设定宽度。
最终的效果如下