当前位置: 首页 > 工具软件 > urban-theme > 使用案例 >

android Theme

长孙知
2023-12-01

1.setTheme(int resid)方法用来设置其窗口的风格,例如:显示、以对话框显示窗口等

2.对比:

在AndroidManifest.xml文件中,可以对每一个Activity设置android:theme

theme的设置 可以设置为系统自带的格式,也可以自定义格式。

 

A: 系统自带格式

   @android:style/Theme.Black  //背景黑色-有标题-非全屏
   @android:style/Theme.Black.NoTitleBar //背景黑色-无标题-非全屏
   @android:style/Theme.Black.NoTitleBar.Fullscreen //背景黑色-无标题-全屏显示
   @android:style/Theme.Dialog //对话框显示
  
   @android:style/Theme.InputMethod

   @android:style/Theme.Light    //背景白色-有标题-非全屏
   @android:style/Theme.Light.NoTitleBar //背景白色-无标题-非全屏
   @android:style/Theme.Light.NoTitleBar.Fullscreen //背景白色-无标题-全屏显示

   @android:style/Theme.Light.Panel
   @android:style/Theme.Light.WallpaperSettings //背景透明
   @android:style/Theme.NoDisplay

   @android:style/Theme.Translucent.NoTitleBar.Fullscreen //半透明、无标题栏、全屏

   @android:style/Theme.Wallpaper.NoTitleBar.Fullscreen

可以在单个Activity里设置,也可以在applicaiton里全局设置。比如:

<activity android:screenOrientation="portrait" android:name=".ui.RegisterActivity" android:theme="@android:style/Theme.NoTitleBar"></activity>

 

 

B:也可以自定义

     在activity里加入 android:theme="@style/MyTitleBar" 再在 style.xml里加入

   <style name="MyTitleBar" parent="android:Theme">
        <item name="android:windowTitleSize">50dip</item>

         <item name="android:windowTitleBackgroundStyle">@style/MyTitleBackground</item>
        <item name="android:windowTitleStyle">@style/WindowTitle</item>
  </style>

 <!-- 自定义标题栏背景图 -->
  <style name="MyTitleBackground" parent="android:TextAppearance.WindowTitle">
   <item name="android:background">@drawable/bg_topbar</item>
  </style>
  <style name="WindowTitle" parent="android:TextAppearance.WindowTitle">
   <item name="android:singleLine">true</item>

  </style>

这里的parent是继承于android:Theme,所以在下面的样式里,只能是window开头的样式才起作用,所有样式请参考\sdk\docs\reference\android\R.attr.html,

也可以设置windowTitleBackgroundStyle 为@style/MyTitleBackground,这样就可以在MyTitleBackground里,设置背景图啦,

3.用法

1,常规方法:

setTheme调用在创建任何activity子view之前,即:

onCreate {

    super.onCreate();

    setTheme();

    setContentView();

}


但由于android一个已知的bug,某些设置了fullScreen属性的style设置会失败,这里需要使用另外的方法

1,先在manifest里给activity设置默认主题

<activity ...  android:theme="@android:style/Theme.Dialog"> 

...

2,在代码中复写setTheme方法:

@Override 

public void setTheme(int resid) { 

    boolean flag = ... ; //一些程序需要的区分判断

    super.setTheme(flag? android.R.style.Theme : resid); 

}


 类似资料:

相关阅读

相关文章

相关问答