Android-Theme 主题

news/2025/1/12 22:00:02/

Android上Style和Theme不同: 
Theme是针对窗体级别的,改变窗体样式; 
Style是针对窗体元素级别的,改变指定控件或者Layout的样式。 

风格是一个包含一种或者多种格式化属性的集合,你可以将其用为一个单位用在布局XML单个元素当中。比如,你可以定义一种风格来定义文本的字号大小和颜色,然后将其用在View元素的一个特定的实例。

主题是一个包含一种或者多种格式化属性的集合,你可以将其为一个单位用在应用中所有的Activity当中或者应用中的某个Activity当 中。比如,你可以定义一个主题,它为window frame和panel 的前景和背景定义了一组颜色,并为菜单定义可文字的大小和颜色属性,你可以将这个主题应用在你程序当中所有的Activity里。


新建一个项目,修改styles.xml代码如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   
<!-- Customize your theme here. -->
   
<item name="colorPrimary">@android:color/holo_green_light</item>
   <item
name="colorPrimaryDark">@android:color/holo_blue_bright</item>
   <item
name="colorAccent">@color/colorAccent</item>
</style>

这个Style在AndroidManifest.xml文件中引用,如下:

<application
   
android:allowBackup="true"
   
android:icon="@mipmap/ic_launcher"
   
android:label="@string/app_name"
   
android:supportsRtl="true"
   
android:theme="@style/AppTheme">
   <activity
android:name=".MainActivity">

通过theme属性引入。运行实例如下:


除了在AndroidManifest.xml中配置之外,还可以在代码中设置,如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   
setTheme(R.style.AppTheme);
   
setContentView(R.layout.activity_main);
}

在setContentView之前,调用setTheme方法传入定义的Style。运行代码可以获得和上面一样的主题风格。

除了可以为Application设置theme之外,还可以为Activity设置,如下:

<style name="testDialog" parent="Base.Theme.AppCompat.Dialog">
   <item
name="android:windowFrame">@null</item>
   <item
name="android:windowNoTitle">true</item>
   <item
name="android:windowBackground">@drawable/test</item>
   <item
name="android:windowIsFloating">true</item>
   <item
name="android:windowContentOverlay">@null</item>
</style>

设置对话框样式的主题,在Activity中引用:

<activity
   
android:theme="@style/testDialog"
   
android:name=".Activity2">

</activity>

MainActivity.java:

public class MainActivity extends AppCompatActivity {

   @Override
   
protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       
setTheme(R.style.AppTheme);
       
setContentView(R.layout.activity_main);
       
Intent intent =new Intent(this,Activity2.class);
       
startActivity(intent);
   
}
}

Activity2.java:

public class Activity2 extends Activity {
   @Override
   
protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       
setContentView(R.layout.activity2_layout);
   
}
   public void test(View view){
       Toast.makeText(Activity2.this, "123", Toast.LENGTH_SHORT).show();
   
}
}

运行项目如下:


http://www.ppmy.cn/news/254317.html

相关文章

Android 主题风格(ThemeStyle)介绍

使用 Style Android 中的View、Window等控件通常会定义一些属性来表示各自的外观、格式等信息&#xff0c;例如一个TextView中的字体大小、字体颜色&#xff0c;一个Dialog的窗口类型、窗口大小等。而Style就是设置到一个View或者Window上的一系列属性的集合。我们可以将TextV…

Android 主题的更换支持在线主题

我们在平常使用一些app的时候,或多或少的接触到有一些app带有更换主题的功能,比如白天和晚上主题的更换,甚至于支持在线主题的下载更换.那么这种主题的更换到底是如何实现的呢&#xff1f; 内置主题 相信大家都用到过,就是在values文件夹下有对应的style文件,在其中自定义主题,…

Android Theme修改系统主题

1&#xff0c;Theme 的作用范围 【1】Theme(主题)是针对窗体级别的,改变窗体样式,对整个应用或某个Activity存在全局性影响。 【2】主题依然在<style>元素里边申明&#xff0c;也是以同样的方式引用。 不同的是Theme可以在Android Manifest中定义的<application>和…

Android常见的Theme主题

Android常见的Theme主题&#xff1a; android:theme"android:style/Theme.Dialog" //Activity显示为对话框模式android:theme"android:style/Theme.NoTitleBar" //不显示应用程序标题栏android:theme"android:style/Theme.NoTitleBar.Fullscreen"…

Android 系统提供的主题

android.R.style 列举了系统提供的样式主题。 在 xml 文件中&#xff0c;作为属性值使用时&#xff0c;需要将主题名称中的 "_"(短横)改为 .(点)。 ThemeThe default theme for apps on API level 10 and lower.Theme_BlackVariant on Theme that ensures the backg…

android样式和主题

样式(Style)是用来指定View或者window的外观和格式的一组属性集合。可以用来指定高度、内边距、字体颜色、字体大小、背景颜色等属性。样式定义在独立于布局文件的XML文件中。保证了内容和设计的独立性。 例如 <TextViewandroid:layout_width"fill_parent"andro…

Android风格与主题(style and theme)

Android xml风格和主题文件的编写&#xff0c;是涉及到整个程序界面美观的因素之一。较好的应用风格和主题&#xff0c;可以实现美观而统一的界面&#xff0c;这就犹如Web开发中的CSS。 Styles和Themes都是资源&#xff0c;存放在res/values 文件夹下。 什么是Style&#xff0…

android笔记:安卓自带的主题android:theme

• android:theme"android:style/Theme.Dialog" 将一个Activity显示为能话框模式 • android:theme"android:style/Theme.NoTitleBar" 不显示应用程序标题栏 • android:theme"android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标…