zoukankan      html  css  js  c++  java
  • Android自定义样式

    前言:这东西梳理过好几次,但每次到要用的时候就又忘了,所以今天决定,把他写成博客,以防忘记。。。


    先贴一段示例模板吧!需要的可以根据注释更改相应属性,代码比较好理解就不讲解了。

    (代码中,可以更改通知栏的背景颜色、ActionBar的背景颜色、一些UI组件的颜色、ActionBar的title样式(如字体颜色,大小))

    <resources>
    
        <!-- Android Studio 自动生成的App样式. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    <!--自定义的App样式--> <style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!--<item name="colorPrimary">@color/orange</item> &lt;!&ndash;ActionBar的背景颜色&ndash;&gt;--> <!--<item name="colorPrimaryDark">@color/red</item> &lt;!&ndash;通知栏的背景颜色&ndash;&gt;--> <!--<item name="colorAccent">@color/colorAccent</item> &lt;!&ndash;一些UI组件的颜色,如EditText光标颜色、switch背景颜色&ndash;&gt;--> <item name="actionBarStyle">@style/MyActionBarStyle</item> <!--自定义的ActionBar样式,优先级高于上面的几种方式--> </style> <!--自定义ActionBar样式,需要在App样式中进行引用--> <style name="MyActionBarStyle" parent="Widget.AppCompat.ActionBar"> <item name="android:background">@color/blue</item> <!--ActionBar的背景颜色--> <item name="background">@color/blue</item> <!--ActionBar的背景颜色--> <item name="android:titleTextStyle">@style/MyActionBarTitle</item> <!--ActionBar的title样式--> <item name="titleTextStyle">@style/MyActionBarTitle</item> <!--ActionBar的title样式--> </style> <!--自定义ActionBar的title样式,需要在ActionBar样式中进行引用--> <style name="MyActionBarTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> <!--ActionBar Title的字体颜色--> <item name="android:textSize">25dp</item> <!--ActionBar Title的字体大小--> </style> </resources>

    有人觉得写样式很麻烦,问有没有什么简便的方法?

    答案当然是有喽,Android样式生成器,一个可视化的样式编辑器,设计好我们的样式后,下载jar包,就可以得到我们需要的样式文件了。还是不知道Android样式生成器怎么用?可以看看极客学院的视频 自定义ActionBar样式,视频前半部分介绍自定义样式,后半部分讲解Android样式生成器的用法。

    还有两个不属于Style样式的东西。但因为比较常用,所以决定介绍一下
    1、在ActionBar上添加按钮
      这个功能其实应该归类为菜单的,方法即是在定义optionMenu菜单时,为菜单项指定 android:icon="@mipmap/ic_launcher"属性和showAsAction="always"属性。实例代码如下

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/search"
            android:icon="@mipmap/ic_launcher"
            android:title="搜索"
            app:showAsAction="always" />
    </menu>
    

      编写好菜单文件之后,下一步就是把写好的菜单文件加载到Activity中了。在Activity中重写onCreateOptionsMenu方法,解析刚编写好的菜单文件即可。不懂optionMune菜单可参考如下博客 菜单menu。实例代码如下

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu,menu);  //解析菜单
            return super.onCreateOptionsMenu(menu);
        }

    2、在ActionBar上添加返回按钮

    这个就很简单了, 在onCreate方法中添加getSupportActionBar().setDisplayHomeAsUpEnabled(true);就可以了(如果不行就换成getActionBar().setDisplayHomeAsUpEnabled(true);这个主要是由于API版本的原因)。实例代码如下

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);     }

     添加完按钮不加点击事件的都是流氓
     如何为返回按钮添加点击事件呢?返回按钮其实也相当于一个OptionMenu菜单项,所以在onOptionsItemSelected方法中加入点击事件即可。Android系统为返回按钮自动分配了一个ID:android.R.id.home 示例代码如下

         @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            super.onOptionsItemSelected(item);
            switch (item.getItemId()){
                case android.R.id.home:
                    finish();
                    break;
            }
            return true;
        }

    参考博客

    自定义ActionBar标题与菜单中的文字样式

    菜单Menu

  • 相关阅读:
    C# 应用
    WPF 应用
    WPF 应用
    WPF 应用
    WPF 基础
    WPF 基础
    WPF 应用
    WPF 应用
    下厨房
    买苹果
  • 原文地址:https://www.cnblogs.com/moluo/p/8074376.html
Copyright © 2011-2022 走看看