商城项目实战 | 2.2 Android 仿京东商城——自定义 Toolbar (二)

本文为菜鸟窝作者刘婷的连载。”商城项目实战”系列来聊聊仿”京东淘宝的购物商城”如何实现。

上一篇文章《商城项目实战 | 2.1 Android 仿京东商城——自定义 Toolbar (一)》中已经对 Toolbar 的一些基本属性以及简单使用做了介绍了,这篇文章就开始介绍如何定义属于自己的 Style 的 Toolbar 了。

自定义 Theme

修改 application 的 style —— AppTheme,自己设置 Toolbar 的背景色以及状态栏的颜色,并且设置 windowActionBar 为 false。

1 <!-- Base application theme. -->
2 <style name="AppTheme" parent="Theme.AppCompat">
3     <item name="colorPrimary">@color/colorPrimary</item>
4     <item name="colorPrimaryDark">@color/colorPrimary</item>
5     <item name="android:windowActionBar">false</item>
6     <item name="android:windowNoTitle">true</item>
7     <item name="windowActionBar">false</item>
8     <item name="windowNoTitle">true</item>
9 </style>

自定义 Toolbar 布局

在res文件下面新建 Toolbar 的布局文件 toolbar.xml,在布局文件中我们需要定义一个搜索框、标题以及一个右侧按钮。具体代码如下。

 1 <RelativeLayout
 2 xmlns:android="http://schemas.android.com/apk/res/android"
 3 android:layout_width="fill_parent"
 4 android:layout_height="wrap_content">
 5 <EditText
 6     android:id="@+id/toolbar_searchview"
 7     android:layout_width="match_parent"
 8     android:layout_height="wrap_content"
 9     android:layout_gravity="center"
10     android:layout_centerVertical="true"
11     android:gravity="center"
12     android:drawableLeft="@mipmap/icon_search"
13     style="@style/search_view"
14     android:hint="请输入搜索内容"
15     android:visibility="gone"
16     />
17
18 <TextView
19     android:id="@+id/toolbar_title"
20     android:layout_width="wrap_content"
21     android:layout_height="wrap_content"
22     android:layout_centerInParent="true"
23     android:layout_gravity="center"
24     android:gravity="center"
25     android:textColor="@color/white"
26     android:textSize="20sp"
27     android:visibility="gone"
28     />
29
30 <Button
31     android:id="@+id/toolbar_rightButton"
32     android:layout_width="wrap_content"
33     android:layout_height="wrap_content"
34     android:layout_alignParentRight="true"
35     android:layout_centerVertical="true"
36     android:textColor="@color/white"
37     android:visibility="gone"
38     style="@android:style/Widget.Material.Toolbar.Button.Navigation"
39     /></RelativeLayout>

布局文件的定义好之后就可以开始定义 Toolbar 了。

自定义 Toolbar

1. 扩展 Toolbar 的属性

自定义的 Toolbar 中需要一些自定义的属性,将自己需要自定义的属性需要定义在 attrs.xml 文件中,首先要新建 attrs.xml 文件,然后定义所需的属性。

1 <declare-styleable name="CNiaoToolBar">
2     <attr name="rightButtonIcon" format="reference"/>
3     <attr name="isShowSearchView" format="boolean"/>
4     <attr name="rightButtonText" format="string"/>
5 </declare-styleable>

2. 定义 Toolbar

新建 class 文件继承于 Toolbar,命名为 CNiaoToolbar。

首先添加布局并且定义好布局控件。

1 mInflater = LayoutInflater.from(getContext());
2  mView = mInflater.inflate(R.layout.toolbar, null);
3  mTextTitle = (TextView) mView.findViewById(R.id.toolbar_title);
4  mSearchView = (EditText) mView.findViewById(R.id.toolbar_searchview);
5  mRightButton = (Button) mView.findViewById(R.id.toolbar_rightButton);
6  LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);
7  addView(mView, lp);

然后就是获取属性,根据属性值对 Toolbar 的样式和内容进行设置和显示。

 1 if(attrs !=null) {
 2         final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs,
 3                 R.styleable.CNiaoToolBar, defStyleAttr, 0);
 4         final Drawable rightIcon = a.getDrawable(R.styleable.CNiaoToolBar_rightButtonIcon);
 5         if (rightIcon != null) {
 6             //setNavigationIcon(navIcon);
 7             setRightButtonIcon(rightIcon);
 8         }
 9         boolean isShowSearchView = a.getBoolean(R.styleable.CNiaoToolBar_isShowSearchView,false);
10         if(isShowSearchView){
11             showSearchView();
12             hideTitleView();
13         }
14         CharSequence rightButtonText = a.getText(R.styleable.CNiaoToolBar_rightButtonText);
15         if(rightButtonText !=null){
16             setRightButtonText(rightButtonText);
17         }
18         a.recycle();
19     }

对于 Toolbar 中控件的样式设置以及监听都可以定义,比如对右侧按钮的事件监听。

1 public  void setRightButtonOnClickListener(OnClickListener li) {
2
3          mRightButton.setOnClickListener(li);
4
5 }

3. 调用 Toolbar

在布局文件 layout 中可以直接调用自定义的 Toolbar。

1 <com.liuting.cniao_shop.widget.CNiaoToolbar
2     android:id="@id/toolbar"
3     android:layout_width="match_parent"
4     android:layout_height="wrap_content"
5     android:background="?attr/colorPrimary"
6     android:minHeight="?attr/actionBarSize"
7     app:isShowSearchView="true" />

最终效果

运行代码,获得最终的效果图。

时间: 2024-10-21 04:22:37

商城项目实战 | 2.2 Android 仿京东商城——自定义 Toolbar (二)的相关文章

商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现

前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要感谢 selector 选择器,本文将讲解仿照京东商城的底部布局的选择效果,如何实现 selector 选择器,在不同的状态下,给 view 设置不同的背景.京东商城底部布局的选择效果如下. View主要的几种状态 主要状态有8种,设置状态的代码以及相应的含义如下. 1 1. android:state_pr

android仿京东商城例子

最近做android的开发,发现了一个好的工程,android仿京东商城. demo地址::http://download.csdn.net/detail/a358763471/8728155 上几张图

android必学的两个项目,android仿京东、android仿微信项目(后期持续更新)

本着学习的态度,当前栏目本人上传的资源一概不需要资源下载分 这里分享两个学习android的项目: 1.android仿微信项目,源码地址:http://download.csdn.net/detail/a358763471/8702533 2.android仿京东商城项目,源码地址:http://download.csdn.net/detail/a358763471/8702393

完美高仿精仿京东商城手机客户端android版源码

完美高仿精仿京东商城手机客户端android版源码,喜欢的朋友可以下载吧. 源码下载: http://code.662p.com/view/4876.html AndroidManifest.xml <?xml version="1.0" encoding="utf-8" ?> - <manifest android:versionCode="6952" android:versionName="2.7.0"

【Android源码】高仿京东商城

高仿京东商城 仿照京东商城做出的APP(仅实现了部分界面) 下载地址:http://www.dwz.cn/z8z3J 运行截图      

【源码分享下载】每日更新之高仿京东商城

高仿京东商城 服务分类: 其他 使用服务: 其他 功能分类: 生活 支持平台: Android 运行环境: Android 开发语言: Java 开发工具: Eclipse 源码大小: 5.51MB 下载地址:http://www.devstore.cn/code/info/87.html 源码简介 仿照京东商城做出的APP(仅实现了部分界面) 源码片段 ? 源码运行截图:

CKG10-高性能高可用Yii2.0电商平台 仿京东商城 高级组件 MySQL LVS

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853进行交流得到帮助,获取学习资料. 下载地址:http://pan.baidu.com/s/1jI05TPW 如果你已经完成了Yii2.0入门,并能用它搭建一些完整的项目,那你就该向更高级的Yii2.0开发迈进,真正学会如何在实际工作中运用Yii2.0

Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

原文:Android项目实战(十七):QQ空间实现(二)-- 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图. 分析: 1.点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2.当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3.当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按钮对应的操作 显然,这个功能我们需要用PopupWindow实现更好~ --------------------

仿京东商城左侧的一个导航条特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ