不需要多讲吧必威手机官网,效果如下

在另一篇文章《2018年设计趋势指南》中发现一款菜单不错,就想着用微信小程序实现

0 简介

Material Design 是由Google工程师们基于传统的设计原则,集合丰富的创意和科学技术所发明的一套全新的界面设计语言,包含了视觉,运动,互动效果等特性.

需求

在后台或OA系统中最常用到的布局往往是一个全屏布局,一般都是上中下三行两列布局,页头、页脚、左侧菜单加一个右侧ifame框架页。所以那种带折叠的二级菜单是会经常使用到的,本例便是实现这样一种比较通用的全兼容可高亮二级缓冲折叠菜单。

今天看了郭神的第二行代码,深深的被MaterialDesign的设计风格所吸引,然后就照例做了一个小Demo,希望多多支持,图片资源来源于网络。先附上我的源码地址:

必威手机官网 1

1 ToolBar 控件

ToolBar 控件是Google推荐使用的,它不仅继承了ActionBar的所有功能,而且使用起来十分灵活,可以和其他控件结合使用,从而打造出Material Design 效果.

页面折叠超出的的部分显示省略号,点击展开后显示全部内容

特点:
全兼容,浏览器测试:IE5.5、IE6、IE7、IE8、FF3.0、谷歌、Safari 4.0、Opera9.0。
Html结构优雅简洁,无多余标签,利于程序循环输出。
样式与结构分离,你可以在样式表中修改不同的风格。
当前选中项高亮状态,一级菜单和二级菜单都可以高亮显示。
折叠层优雅缓冲动画。
最适用于后台和一些OA系统界面。

我的博客地址

开始正题

1.1 隐藏系统原有的 ActionBar

AndroidManifest.xml 文件中找到<application> 标签中的 theme 属性的值.一般是 @style/AppTheme,跳转到 AppTheme的定义(res/values/styles),如下 :

<resources>
    <!-- Base application theme. -->
    <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>
</resources>

其中的 Theme.AppCompat.Light.DarkActionBar 是一个深色的ActionBar主题.我们可以将其替换成Theme.AppCompat.Light.NoActionBar 则可以将ActionBar隐藏. 接着我们就可以使用ToolBar了.对MainActivity的布局文件修改如下

<!-- 
    1. xmlns:app="http://schemas.android.com/apk/res-auto" 新增的命名控件,
       主要是为了兼容 Android 5.0 以前的设备.
    2. android:theme="@style/ThemeOverlay.AppCompat.Dark" 设置ToolBar主题.
       因为我们App使用的是 Light主题,因此文字是深色,再次让此控件单独使用此
       主题,效果是显示的文字是亮的.
    3. app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 设置菜单主题色.
       popupTheme 属性是 5.0 新增因此需要使用app命名空间做兼容处理.
    4. android:layout_height="?attr/actionBarSize" 设置ToolBar的高度和
       ActionBar一样.
-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/activity_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <!-- ToolBar 替代 ActionBar -->
    <android.support.v7.widget.Toolbar
        android:id="@+id/tb_actionbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        />
</RelativeLayout>

接着在Activity中进行设置

// 1. 找到Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.tb_actionbar);
// 2. 设置ActionBar
setSupportActionBar(toolbar);

这样基本的设计就完成了.效果和ActionBar看上去一样.

必威手机官网 2

缺点:

照例,一波动态图来袭:

基本 flex 布局再加个 padding 不需要多讲吧?

1.2 为 ToolBar 添加action

  • res/ 下创建 menu 文件夹,然后在res/menu/ 下创建 toolbar_menu.xml内容如下 :
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!--
        1. app:showAsAction="always" 用来设置按钮的显示位置.
            1.1 always : 永远显示在Toolbar 中.
            1.2 ifRoom : 如果空间足够则显示在ToolBar中.
            1.3 never  : 永远显示在菜单中
        2. ToolBar 中的Action只会显示图片,菜单中的action只会显示文字.
    -->
    <item android:id="@+id/tb_backup"
          android:title="BackUp"
          android:icon="@drawable/icon_backup"
          app:showAsAction="always"
        />
    <item android:id="@+id/tb_delete"
          android:title="Delete"
          android:icon="@drawable/icon_delete"
          app:showAsAction="ifRoom"
        />
    <item android:id="@+id/tb_settings"
          android:title="Settings"
          android:icon="@drawable/icon_settings"
          app:showAsAction="never"
        />
</menu>
  • 在Activity总重写和菜单相关的方法
// 加载菜单布局文件.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar_menu,menu);
    return true;
}
// 添加菜单选项点击事件. 我们在每一个action使用Toast进行提示.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.tb_backup:
            Toast.makeText(MainActivity.this,"备份",Toast.LENGTH_SHORT).show();
            break;
        case R.id.tb_delete:
            Toast.makeText(MainActivity.this,"删除",Toast.LENGTH_SHORT).show();
            break;
        case R.id.tb_settings:
            Toast.makeText(MainActivity.this,"设置",Toast.LENGTH_SHORT).show();
            break;
    }
    return true;
}

运行程序效果图如下 :

必威手机官网 3

ToolBar 效果图

需要解决的问题

不支持防刷新,这个功能在后台应用系统中应该用途不大,没有加入这个功能。
在IE6中缓冲效果没有出来,对于IE6,就弱化一下效果。
还是先看看效果截图:
必威手机官网 4
简单说一下制作这样的菜单的一些简单的思路和会遇到的问题。

必威手机官网 5MaterialDesign风格.gif

提一下,微信小程序里input的placeholder样式是写在 placeholder-style 里或使用 placeholder-class

2 滑动菜单

滑动菜单就是将一些单选项隐藏起来,而不是放在主屏幕上,然后可以通过滑动将菜单显示出来.这zhong种方式节省了空间又实现了非常好的滑动效果.Material Design 推荐使用这种方式. Google提供了DrawerLayout 控件来实现这种效果.

  • 箭头随展开折叠后箭头方向的变化
  • 当点击箭头文本显示内容的变化

一般制作一个效果,我的制作流程一般是先画出HTML结构层内容,再写样式,之后是搞一些锦上添花的效果,如JS特效等等。不知各位大牛们是怎样一个流程模式。

效果还不错吧,就是有点失真...其实在这之前Android的UI风格都不是很美观,所谷歌的设计工程师们就开始研究出了一种新的设计语言---MaterialDesign。在2015年得谷歌大会上推出了DesignSupport库,使得开发者在即使不了解MaterialDesign的情况下也能非常轻松地将自己得应用Material化。

接下来我会按照下面流程介绍如何实现这一效果

  • 每个小卡片遵从 flex 布局,设置 width: 50% ,别忘了 flex-wrap: wrap
  • 每个小卡片内部同为 flex 布局并设置垂直居中,想了想还是科普下:

2.1 DrawerLayout 使用

在DrawerLayout 布局中允许添加两个直接子控件, 第一个是屏幕中显示的内容;第二个是菜单中显示的内容.现在我们对Activity布局文件进行如下修改.

<!-- 将根布局替换成 DrawLayout  -->
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/dl_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <!-- 屏幕中的内容 -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.Toolbar
            android:id="@+id/tb_actionbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            android:theme="@style/ThemeOverlay.AppCompat.Dark"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            />
    </FrameLayout>
    <!--
        菜单中的内容
        1. android:layout_gravity="start" 该属性必须设置,
           它表示了菜单弹出的方向.
           start : 表示根据系统语言进行判断弹出方向.
           left  : 左侧弹出
           right : 右侧弹出.
     -->
    <TextView
        android:layout_width="match_parent"
        android:layout_gravity="start"
        android:text="菜单"
        android:textSize="32sp"
        android:background="#FF00FF"
        android:layout_height="match_parent"/>
</android.support.v4.widget.DrawerLayout>

此时运行程序就可以从通过边缘滑动将菜单显示出来 效果图如下.

必威手机官网 6

Paste_Image.png

接下来我们将在ToolBar 中增添一个按钮通过点击该按钮来实现打开菜单,类似于QQ上的点击头像,引出菜单.我们修改Activity代码如下:

  • onCreate() 添加如下代码.

    • 我们首先通过 findViewById() 方法获取到DrawerLayout实例.
    • 通过 getSupportActionBar() 来获取到ActionBar实例,此时的ActionBar实际是一个ToolBar.
    • 通过 setDisplayHomeAsUpEnabled(true) 方法让导航按钮显示出来.
    • 通过 setHomeAsUpIndicator() 来设置导航按钮的图标.
// 实现按钮弹出菜单
mDrawerLayout = (DrawerLayout) findViewById(R.id.dl_main);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null){
    // 设置显示导航按钮.也就是返回按钮
    actionBar.setDisplayHomeAsUpEnabled(true);
    // 设置返回按钮的图片
    actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
}
  • 在 onOptionsItemSelected 中添加如下代码

    • switch(item.getItemId()) 中增加一个case分支 .用于处理用户点击导航按钮时的响应处理.
    • 通过 DrawerLayout 的 openDrawer() 打开菜单. 该函数需要传入一个Gravity参数.

注意 :系统提供的导航按钮的id是 android.R.id.home

// 新增加一个case 判断
case android.R.id.home:
// 弹出菜单.
mDrawerLayout.openDrawer(GravityCompat.START);
break;

如何解决?

结构层:

  1. Toolbar
  2. DrawerLayout
  3. SnackBar
  4. CardView
  5. RecyclerView
  6. SwipeRefreshLayout
  7. AppBarLayout
  8. CollapsingToolbarLayout
  9. 沉浸式状态栏

2.2 NavigationView 的使用

NavigationView 是 design support 库中提供的一个控件 ,它严格按照 Material Design 来设计的 , 它使滑动菜单的实现变的非常简单. 它一般分为上下两部分;下面是菜单选项,上面是其他信息.

注意 : 由于我们需要使用design support库和图片kuang'jia框架因此需要添加如下依赖

// 添加design support 库依赖
compile 'com.android.support:design:24.2.1'
// 添加圆形图片裁剪图第三方库依赖
compile 'de.hdodenhof:circleimageview:2.1.0'
  • res/menu/下创建菜单布局文件 nav_menu.xml 内容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!--
        1. android:checkableBehavior="single" 设置在该组中的item是单选的.
    -->
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_call"
            android:title="Call"
            android:icon="@drawable/ic_menu_call"
            />
        <item
            android:id="@+id/nav_friend"
            android:title="Friend"
            android:icon="@drawable/ic_menu_friend"
            />
        <item
            android:id="@+id/nav_location"
            android:title="Location"
            android:icon="@drawable/ic_menu_location"
            />
        <item
            android:id="@+id/nav_mail"
            android:title="Mail"
            android:icon="@drawable/ic_menu_mail"
            />
        <item
            android:id="@+id/nav_task"
            android:title="Tasks"
            android:icon="@drawable/ic_menu_task"
            />
    </group>
</menu>
  • 创建上半部分布局文件.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
                android:padding="10dp"
                android:background="?attr/colorPrimary"
              android:layout_height="180dp">
    <!-- 使用圆形图片框架 -->
    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="70dp"
        android:id="@+id/iv_head_pic"
        android:src="@drawable/head_pic"
        android:layout_centerInParent="true"
        android:layout_height="70dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:id="@+id/tv_mail"
        android:text="wsj_china_cpu@163.com"
        android:textSize="14sp"
        android:textColor="#FFF"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"/>
    <TextView
        android:layout_width="wrap_content"
        android:id="@+id/tv_name"
        android:layout_above="@id/tv_mail"
        android:text="WSJ"
        android:textColor="#FFF"
        android:textSize="14sp"
        android:layout_height="wrap_content"/>

</RelativeLayout>
  • 将MainActivity的布局文件中的TextView替换成 NavigationView
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:id="@+id/nav_view"
android:layout_gravity="start"
app:menu="@menu/nav_menu"
app:headerLayout="@layout/header_layout"
android:layout_height="match_parent"/>
  • 在 MainActivity 的onCreate() 中添加如下代码

    • 首先获取到NavigationView实例.
    • 通过 setCheckedItem() 设置默认选择的item
    • 通过 setNavigationItemSelectedListener 设置item点击事件监听.
    • 使用Toast打印点击的选项.
    • 通过 closeDrawers() 关闭菜单.
 // 导航菜单
 NavigationView navigationView =
         (NavigationView) findViewById(R.id.nav_view);
 // 设置默认选项
 navigationView.setCheckedItem(R.id.nav_call);
 // 设置Item点击
 navigationView.setNavigationItemSelectedListener(
         new NavigationView.OnNavigationItemSelectedListener() {
     @Override
     public boolean onNavigationItemSelected(@NonNull MenuItem item) {
         switch (item.getItemId()){
             case R.id.nav_call:
                 Toast.makeText(MainActivity.this
                         ,"电话",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.nav_friend:
                 Toast.makeText(MainActivity.this
                         ,"朋友",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.nav_mail:
                 Toast.makeText(MainActivity.this
                         ,"邮件",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.nav_location:
                 Toast.makeText(MainActivity.this
                         ,"地位",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.nav_task:
                 Toast.makeText(MainActivity.this
                         ,"任务",Toast.LENGTH_SHORT).show();
                 break;
         }
         // 关闭菜单
         mDrawerLayout.closeDrawers();
         return true;
     }
 });

此时的效果图如下

必威手机官网 7

Paste_Image.png

  • 箭头方向的变化是一个点击事件bindtap,点击后更换小图标;
  • 文本变化是一个show或者hide的事情,折叠的时候有个多行文本溢出得问题五个属性(display: -webkit-box,-webkit-box-orient: vertical, -webkit-line-clamp,text-overflow,overflow)
  • 状态与数据绑定控制样式

结构层的构思一般是建立在一个感性认识上的,一般是有一个效果图,根据这个效果图构建最简洁的HTML结构。如上图所示,映入眼帘的第一印象,首先是想到用一个UL的无序列表,但是…这是一个二级嵌套的列表,这是我们首先需要考虑的问题。

首先添加依赖:

.main-view-item{ display: flex; justify-content: center; align-items: center; width: 50%;}

3 悬浮按钮和可交互提示

立面设计师Material Design中的一条非常重要的设计思想. 悬浮按钮就体现了立面设计的思想.这种按钮不属于主界面的一部分,而是位于另外一个纬度,给人一种悬浮的感觉.

具体实现

因此结构应该是下面这样子:

compile 'com.android.support:appcompat-v7:24.2.1'compile 'com.android.support:design:24.0.0'compile'com.android.support:recyclerview-v7:24.0.0'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:cardview-v7:24.1.1'compile 'de.hdodenhof:circleimageview:2.1.0'

flex真他娘的好用

3.1 FloatActionButton 使用

FloatActionButton 是Google提供的悬浮按钮控件.

  • 在 MainActivity中添加FloatActionButton.
<!--
    添加悬浮按钮
    1. app:elevation="8dp" 指定高度值(立体) 高度值也大投影就越大,
       投影效果也就越淡.
 -->
<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:id="@+id/fab"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:src="@drawable/ic_done"
    app:elevation="8dp"
    android:layout_height="wrap_content"/>
  • 在MainActivity中添加点击事件
// 悬浮按钮的点击事件.
FloatingActionButton fab =
        (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this,"悬浮框",
                Toast.LENGTH_SHORT).show();
    }
});

wxml

复制代码 代码如下:

效果如下:

至于里面的图片是从iconfont上拿的,调这几个配色的时间是我布局时间的几十倍....

3.2 SnackBar 可交互提醒控件.

该控件和Toast一样是用来提示用户的但是它增加了取消选项.也就是可交互的.但是他和Dialog也不同,他也会自动消失.

  • 修改MainActivity中悬浮按钮点击事件的处理代码
// 悬浮按钮的点击事件.
FloatingActionButton fab =
        (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 使用SnackBar来提示.
        Snackbar.make(v,"Data to delete!!",Snackbar.LENGTH_SHORT)
                .setAction("Undo", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this,"悬浮框",
                                Toast.LENGTH_SHORT).show();
                    }
                })
                .show();
    }
});

效果图如下,可以看到有 "UNDO" 选项.

必威手机官网 8

Paste_Image.png

  <view class="company-detail">
    <view class="company-detail-content">
      <view class="weui-loadmore weui-loadmore_line">
        <view class="weui-loadmore__tips weui-loadmore__tips_in-line">公司介绍</view>
      </view>
      <view class="long-dec {{isFold?'hide':'show'}}">
        <text class="first-dec">
          创业是个失败概率很大的事情,我们很高兴从2012底到现在还活着, 而且还活的很不错。 目前有赞旗下的产品有:有赞微商城、有赞收银、有赞零售、有赞美业、有赞批发、有赞买家版、有赞微小店.
        </text>
        <text class="second-dec">
          我们认为,相比较业务来说,团队才是公司的核心。有赞没有“员工”只有“小伙伴”,也没有人姓“公”名“司”,我们有一群聪明、有要性、又皮实的伙伴,这才是我们最大的资产。
        </text>
        <text class="last-dec">
          有赞的小伙伴目前已超过1000人,工程师比例占55%,我们有很浓的工程师氛围,每周都有很多的有意思的分享:有出国旅游的分享、有如何搭讪的分享、有如何装修房子的分享...技术分享更是数不胜数。 我们的工作不是很轻松,但我们的氛围很轻松,很open,公司里随处可见骑着独轮车来回跑的工程师、懒人沙发、午睡吊篮、复古电话亭等等,每个月都有节日、新人表演、拓展、派对等,对我们来说,天天都可以是节日。我们倡导简单直接的沟通方式,希望做一家通透的公司。这里并没有过多的等级划分,你可以随时提出自己的意见和任何人PK。福利方面我们全额缴纳五险一金,每月980元的有赞E卡鼓励大家一起吃喝玩乐。工程师标配MacBookPro、大屏显示器和机械键盘。办公室里常备零食、水果,休息区有电视、游戏机、桌球、乒乓球、四驱赛车、桌游随时供大家放松减压。每天晚下班的打车费报销,每年给你和你的家人提供旅游和体检等等。
        </text>
      </view>
      <image class="arrow" src=" {{isFold?'../../youzan-image/down.png':'../../youzan-image/up.png'}}" bindtap="showAll"></image>
    </view>
  </view>

<li><a href="#none">一级菜单项</a>
<ul>
<li><a href="#none">二级菜单项</a></li>
</ul>
</li>

必威手机官网 9toolbar.PNG

微信小程序的动画只能用JS,常规手段不可用,来个头脑风暴hack起来

3.3 CoordinatorLayout

CoordinatorLayout 可以认为是加强版本的的FrameLayout ,在普通情况下他和FrameLayout 用法基本一致. 但是他可以监听子控件的各种shi'jian事件,并自动帮我们做出是适当的行为.比如上面的的SnackBar 弹出的时候会覆盖FloatActionButton,如果使用CoordinatorLayout则会自动将SnackBar上移.

  • 我们修改MainActivity的布局文件
<!-- 屏幕中的内容
    将FrameLayout 换乘 CoordinatorLayout
-->
<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/tb_actionbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        />

    <!--
        添加悬浮按钮
     -->
    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:id="@+id/fab"
        android:layout_gravity="bottom|end"
        android:layout_margin="16dp"
        android:src="@drawable/ic_done"
        app:elevation="8dp"
        android:layout_height="wrap_content"/>
</android.support.design.widget.CoordinatorLayout>

效果图 ,可以看到在SnackBar弹出时,FloatActionButton上移.

必威手机官网 10

Paste_Image.png

wxss

在有二级菜单时是一个嵌套的UL结构,无二级菜单时则是如下:

它有点类似于之前得ActionBar,就是活动最顶部得哪个标题栏。但是,它只能位于活动得顶部,从而影响效果,所有官方现在已经不再建议使用ActionBar了。

观察每个卡片的折叠方向后,为每个卡片添加初始 rotate 使其反向折叠,我在这里定义了两个Class

4 卡片式布局

卡片式布局也是Material Design 中提出的一个概念,他可以让页面中的元素看起来像是子啊卡片中一样,并且可以拥有圆角和投影.

.long-dec{
  padding-left: 20rpx;
  margin-top: -87rpx;
  display: -webkit-box;/*关键属性*/
  font-size:28rpx;
  color:#cfcfd0;
  line-height: 40rpx;
  word-break: break-all;
  -webkit-box-orient: vertical;/* 关键属性 */
  -webkit-line-clamp:6;/* 关键属性 */
  overflow: hidden;/* 关键属性 */
  text-overflow:ellipsis;/* 超出内容显示省略号*/
}
.hide{
 display: -webkit-box;
}
.show{
 display: block;
}
.arrow{
 position: absolute;
 width: 40rpx;
 height: 43rpx;
 left: 50%;
 transform: translate(-50%);
}

复制代码 代码如下:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> ... </style>

 <android.support.v7.widget.Toolbar android: android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/Theme.AppCompat.Light" />

本文由必威发布于必威-编程,转载请注明出处:不需要多讲吧必威手机官网,效果如下

相关阅读