«

Activity与Theme

时间:2024-3-2 18:51     作者:韩俊     分类: Android


今天写Android程序的时候碰到的一个问题。记录一下。

在程序中我需要从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才起作用,窗口会按照实际内容来设定宽度。
最终的效果如下



Android自带了很多预设的主题,我们可以在这些主题的基础上进行修改,以生成我们自己的主题风格
比如在values/styles.xml文件里,可以这样定义自己的主题
<style name="Theme2" parent="android:Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>


Android自带的主题风格有
android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式


android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏


android:theme="@android:style/Theme.NoTitleBar.Fullscreen" : 不显示应用程序标题栏,并全屏


android:theme="@android:style/Theme.Light ": 背景为白色


android:theme="@android:style/Theme.Light.NoTitleBar" : 白色背景并无标题栏


android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" : 白色背景,无标题栏,全屏


android:theme="@android:style/Theme.Black" : 背景黑色


android:theme="@android:style/Theme.Black.NoTitleBar" : 黑色背景并无标题栏


android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" : 黑色背景,无标题栏,全屏


android:theme="@android:style/Theme.Wallpaper" : 用系统桌面为应用程序背景


android:theme="@android:style/Theme.Wallpaper.NoTitleBar" : 用系统桌面为应用程序背景,且无标题栏


android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" : 用系统桌面为应用程序背景,无标题栏,全屏


android:theme="@android:style/Theme.Translucent : 透明背景


android:theme="@android:style/Theme.Translucent.NoTitleBar" : 透明背景并无标题


android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" : 透明背景并无标题,全屏


android:theme="@android:style/Theme.Panel ": 面板风格显示


android:theme="@android:style/Theme.Light.Panel" : 平板风格显示

标签: android

热门推荐