Activity与Theme

本文介绍了如何在Android中自定义Activity主题,通过在values/styles.xml文件定义样式,例如创建Theme2主题,设置为对话框模式。同时列举了Android自带的各种预设主题,包括Dialog、NoTitleBar、Light、Black、Wallpaper、Translucent和Panel系列,涵盖了不同显示效果如全屏、无标题栏等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写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" : 平板风格显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值