如何在 Android 应用程序中使用自定义主题

2025-01-06 12:25:31
推荐回答(3个)
回答1:

  Android 应用程序中使用自定义主题的方法:

 1、新建一个项目 Lesson32_StyleAndTheme。

2、拷贝下面三张 Nine-Patch PNG图片到res/drawable目录下:

3、在按钮的同目录下建立一个文件btn_custom.xml,把上述3张图片整合成一个按钮背景文件,让三张图片成为不同状态下的按钮表现效果。具体写法如下:

  

  

          

          

          

          

  

 4、在res/values目录下定义style.xml文件,内容如下:

  

  

  

                center_vertical|center_horizontal  

                #ffffffff  

                #ff000000  

                0  

                -1  

                0.2  

                16dip  

                bold  

                @drawable/btn_custom  

                true  

                true  

          

  

    5dp  

                #ff9900  

                25sp  

    

  

    25sp  

    

  

5、在res/layout/目录下定义main.xml文件,内容如下:

  

 

          

          

    

  

6、在res/values目录下定义theme.xml文件:

  

           

  

                @style/basicbuttonstyle  

                @android:color/transparent     

                true     

    

 

7、在AndroidManifest.xml中给整个应用程序设置主题:

  

  

      

          

              

                  

                  

              

          

      

      

   

 8、程序的最终运行效果图如下:

回答2:

 在Android中,定义外观最简单的方式是直接设置属性在视图对象上。由于要对整个应用程序设置样式,这种方法就显得不是很方便了。因此,我们可以创建
  样式来绑定视图属性。但要注意的是,样式只能设置在xml里。这意味着,我们在创建/加载视图的时候,只能一次设置一个样式。下面是如何在res
  /values/styles.xml文件中给TextView设置属性的示例。

  

  我们引用@style/CustomText样式应用在我们的layout.xml文件中。该样式引用了一个父样式
  @android:style/TextAppearance.Medium。由于开始样式引自android: 命名空间,那么我们这个样式默认也随android平台。

  创建主题绑定样式

  假设我们要改变我们所有TextView的文字大小和颜色,并且不需要明确设置每一个TextView。这是一个非常常见的情况,幸运的
  是,Android提供了一个非常强大的主题机制。从本质上讲,主题就是样式资源本身,使用“key”指向具体的样式。一个视图对象基于这个key可以查
  看到具体的样式。下面是一个简单的例子,在res/values/themes.xml文件:

  

  如上所述,主题是样式资源本身,所以我们声明一个Theme.App继承自Android平台提供的holo主题。我们将我们的CustomText样式
  指定到android:textAppearance属性。属性就是一个预定义的“变量”,它可以被其他资源元素引用。事实上,它也可以创建自定义属性在
  res/values/attr.xml文件。

  现在有趣的事情来了。我们的主题Theme.MyApp不仅可以通过AndroidManifest.xml的设置应用到Activity上,它也可以在
  运行时在代码中设置。你将不得不重新启动当前Activity(或使用ContextWrapper应用UI的主题部分),但它使主题更加动态。

回答3:

这大品牌,说不定也会