怎样调整toolbar icon中setNavigationIcon的图标大小

Android ToolBar整合实例使用方法详解
作者:KdanMin
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了Android ToolBar整合实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近做项目中遇到ToolBar因为不同的界面toobar不同为了描述统一的风格。相信大家也非常清楚,大多数ToolBar包括以下几个方面
左标题 左边题颜色 左标题图标等
标题 标题颜色
右标题 右标题颜色 右标题图标
ToolBar标题 ToolBar颜色 ToolBar图标
ToolBar子标题 ToolBar子标题 ToolBar子标题颜色
再看一下淘宝以及其他appToolBar样式界面
下面看下我自定义的CustomeToolBar继承原生ToolBar
package com.ldm.
import android.content.C
import android.graphics.drawable.D
import android.support.v4.content.ContextC
import android.util.AttributeS
import android.view.V
import android.widget.TextV
import android.widget.T
* Created by John on .
public class CustomeToolBar extends Toolbar {
private TextView mTvMainTitleL
private TextView mTvMainT
private TextView mTvMainR
public CustomeToolBar(Context context) {
super(context);
public CustomeToolBar(Context context, AttributeSet attrs) {
super(context, attrs);
public CustomeToolBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
protected void onFinishInflate() {
super.onFinishInflate();
mTvMainTitleLeft= (TextView) findViewById(R.id.lt_main_title_left);
mTvMainTitle= (TextView) findViewById(R.id.lt_main_title);
mTvMainRight= (TextView) findViewById(R.id.lt_main_title_right);
//设置主title内容
public void setMainTitle( String text )
this.setTitle(" ");
mTvMainTitle.setVisibility(View.VISIBLE);
mTvMainTitle.setText(text);
//设置主title的内容文字的颜色
public void setTitleColor(int color )
mTvMainTitle.setTextColor(color);
//设置左边title内容
public void setMainTitleLeft(String text )
mTvMainTitleLeft.setVisibility(View.VISIBLE);
mTvMainTitleLeft.setText(text);
//设置左边的title颜色
public void setMainTitleLeftColor(int color )
mTvMainTitleLeft.setTextColor(color);
//设置左边icon
public void setMainTitleLeftDrawable(int res )
Drawable left= ContextCompat.getDrawable(getContext(),res);
left.setBounds(0,0,left.getMinimumWidth(),left.getMinimumHeight());
mTvMainTitleLeft.setCompoundDrawables(left,null,null,null);
//设置右边的title
public void setTvMainRightText(String text )
mTvMainRight.setVisibility(View.VISIBLE);
mTvMainRight.setText(text);
//设置右边标题的颜色
public void setMainTitleRightColor(int color )
mTvMainRight.setTextColor(color);
//设置右边icon
public void setMainTitleRightDrawable(int res )
Drawable right= ContextCompat.getDrawable(getContext(),res);
right.setBounds(0,0,right.getMinimumWidth(),right.getMinimumHeight());
mTvMainTitleLeft.setCompoundDrawables(right,null,null,null);
//设置toolbar颜色
public void setToolBarBackground(int res )
this.setBackgroundResource(res);
//设置ToolBar左边的图标
public void setToolbarLeftBackImageRes(int res )
this.setNavigationIcon(res);
//设置toolbar左边文字
public void setToolbarLeftText(String text ){
this.setNavigationContentDescription(text);
//设置toolbar标题
public void setToolbarTitle(String text )
this.setTitle(text);
//设置toolbar颜色
public void setToolbarTitleColor(int color )
this.setTitleTextColor(color);
//设置ToolBar子标题
public void setToolbarSubTitleText(String text )
this.setSubtitle(text);
//设置toolbar子标题的颜色
public void setToolbarSubTitleTextColor(int color )
this.setSubtitleTextColor(color);
然后布局引用activity_custome_toolbar
因为其实toolbar说白也是view也可以说是一个布局
所以我们只要根据自己需求往里面丢东西就ok,这里可能不全面,希望大家一起完善谢谢!
&?xml version="1.0" encoding="utf-8"?&
&com.ldm.imitatewx.CustomeToolBar xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?attr/label_textSize"
android:background="@android:color/holo_green_light"
android:fitsSystemWindows="true"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:popupTheme="@style/MyPopStyle"
android:id="@+id/lt_main_title_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="返回"
android:gravity="center"
android:drawableLeft="@drawable/ic_back_u"
android:textColor="@android:color/white"
android:singleLine="true"
android:textSize="16sp"
android:visibility="visible"/&
android:id="@+id/lt_main_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:singleLine="true"
android:textColor="@android:color/white"
android:text="标题"
android:textSize="20sp"
android:visibility="visible"
android:id="@+id/lt_main_title_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:text="返回"
android:gravity="center"
android:drawableRight="@drawable/ic_add"
android:textColor="@android:color/white"
android:singleLine="true"
android:textSize="16sp"
android:visibility="visible"/&
&/com.ldm.imitatewx.CustomeToolBar&
到这里基本结束了!大家可以继续完善!谢谢!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具2250人阅读
Android开发(11)
一、Toolbar的介绍
&&&&&&&&Android5.0引入了一个新控件Toolbar,代替了ActionBar,由于其高度的灵活性、可定制性,符合Material Design的风格,越来越多的应用用上了Toolbar,我们可以看到知乎、网易云音乐的标题栏用的Toolbar。由于ActionBar是由系统创建并对其进行相关的初始化,并不能很好的控制,所以在很多APP上就出现了跟ActionBar相似的效果,但是又不是ActionBar,模仿ActionBar而已,我们原来的APP就是自己定义的一个简单的title布局,使用的时候加入到相应的页面,所以这个时候Toolbar出现了,ToolBar只是一个普通的控件,继承自ViewGroup,可以直接在布局文件中使用,但是跟ActionBar又没有太大的区别,只不过更自由了。
二、Toolbar的使用
1.Toolbar的简单使用
&&&&&&&&官方提供了Toolbar,也提供了Support library向下兼容的支持包,5.0以下的也可以使用,使用Android Studio的同学一般创建应用都有导入这些包。
compile 'com.android.support:appcompat-v7:23.3.0'
&&&&&&&&在使用Toolbar的时候,我们需要隐藏掉原来的ActionBar,直接在主题中修改:
&style name="AppTheme.NoActionBar"&
&item name="windowActionBar"&false&/item&
&item name="windowNoTitle"&true&/item&
&&&&&&&&我们先创建一个布局
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"&
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
&&&&&&&&运行就是下面这个样子,当然这只是最简单的使用,如果不替代ActionBar,那么什么也没有,取代过后看着很干净,Toolbar默认只显示一个标题文本,默认情况下该标题文本会使用AndroidManifest中当前Activity节点下label标签所对应的文本,如果当前Activity节点下没有label标签则查找上级节点application中的label标签文本显示,这点与ActionBar类似
&&&&&&&&你会发现丑爆了是不是,Toolbar只是一个普通的控件,我们可以自由定制它,给它设置background,让它替代ActionBar只需要在Activity中将Toolbar的实例对象传递进去即可:
setSupportActionBar(toolbar);
&&&&&&&&现在我们设置一个背景色:
&&&&&&&&你会发现跟ActionBar有些地方差不多,如果你的主题设置了AppTheme.NoActionBar但是没有继承AppThme,你会发现上面有一条白色的状态栏,没实现沉浸式状态栏,因为我们没有使用主题风格,我们可以修改哈我们的主题风格,使用如下主题并继承Theme.AppCompat.Light.NoActionBar,然后将Activity的主题修改为我们的主题风格,现在运行你会发现状态栏变色了,取而代之的是colorPrimaryDark颜色,但是这一属性只在5.0以上才有效果。
name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&
& =""&@android:color/holo_green_light&/item&
&item name="colorPrimaryDark"&@android:color/holo_green_light&/item&
&item name="colorAccent"&@color/colorAccent&/item&
&&&&&&&&配置的主题风格颜色几种分别如下所示:
&&&&&&&&对主题、属性、风格不清楚的同学可以看看这篇文章,讲得很好的一篇文章
2.Toolbar的图标、标题设置
&&&&&&&&我们借用爱哥下面这张图,上面的导航按钮、logo、主标题、副标题以及菜单按钮等,我们都可以在设置,XML可以设置,代码里面一样可以设置:
&&&&&&&&设置这些属性也是比较简单,我们先看布局
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"&
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@android:color/holo_green_light"
app:title="hello"&
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试"
android:textSize="20sp"
android:textColor="@android:color/white"/&
&&&&&&&&然后在activity中设置相关属性既可以,默认的ToolBar的背景色是colorPrimary,但是在实际使用的过程中背景主题色会改变我们的颜色,黑色的字体和图标看起来是非常不符合我们的亮色的Toolbar背景色的,我们可以自由定制的,修改字体颜色还有按钮颜色,修改字体颜色在下面已经贴出来了,而修改按钮颜色我们可以在主题中指定即可
&item name="colorControlNormal"&
&&&&&&&&然后给出修改字体颜色的属性
&style name="Theme.ToolBar.Base.Title" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"&
&item name="android:textSize"&20sp&/item&
&item name="android:textColor"&@android:color/white&/item&
&style name="Theme.ToolBar.Base.Subtitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"&
&item name="android:textSize"&14sp&/item&
&item name="android:textColor"&@android:color/white&/item&
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.toolbar_layout)
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar)
//设置Logog
toolbar.setLogo(R.mipmap.ic_launcher)
//设置主标题
toolbar.setTitle("Title")
//设置主标题颜色
toolbar.setTitleTextColor(getResources().getColor(android.R.color.white))
//修改主标题的颜色、外观
toolbar.setTitleTextAppearance(this, R.style.Theme_ToolBar_Base_Title)
//设置副标题
toolbar.setSubtitle("Subtitle")
//设置副标题颜色
toolbar.setSubtitleTextColor(getResources().getColor(android.R.color.white))
//修改副标题的颜色、外观
toolbar.setSubtitleTextAppearance(this,R.style.Theme_ToolBar_Base_Subtitle)
//设置导航菜单
toolbar.setNavigationIcon(R.drawable.ic_drawer_home)
//对NavigationIcon添加点击
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//设置菜单弹出样式的文本颜色和背景
toolbar.setPopupTheme(R.style.PopupMenu)
//设置菜单
toolbar.inflateMenu(R.menu.menu_main)
//设置菜单及其点击监听
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.search:
case R.id.notification:
return true
&&&&&&&&接着在menu_main里面添加我们的action menu菜单项
&menu xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
tools:context="com.lhtb.toolbar.MainActivity"&
android:id="@+id/search"
android:icon="@drawable/ic_search"
android:title="@string/menu_search"
app:showAsAction="ifRoom" /&
android:id="@+id/notification"
android:icon="@drawable/ic_notifications"
android:title="@string/menu_notifications"
app:showAsAction="ifRoom" /&
android:id="@+id/action_item1"
android:title="@string/item_01"
app:showAsAction="never" /&
android:id="@+id/action_item2"
android:title="@string/item_02"
app:showAsAction="never" /&
&&&&&&&&关于菜单文件这个显示位置有几个属性我简单提一下:
&&&&&&&&1.ifRoom:只要在app bar存在可用空间,就可以显示,可以通过orderInCategory设置优先级,具有最低的值将被显示为操作,其余显示在溢出菜单。
&&&&&&&&2.withText:这个看字面意思就能明白就是和图标显示文字,一般和ifRoom一起通过“|”使用,但是你发现设置了竖屏看不到,要横屏才能看到。
&&&&&&&&3.never:这个就是一直显示在溢出菜单里面,没什么好说的
&&&&&&&&4.always:始终把这个放到项目中app bar。但是谷歌建议避免这么使用,除非它非常关键,使它始终显示在操作栏。设置多个始终显示在app bar可能会导致它们在应用栏其他UI重叠。
&&&&&&&&5.collapseActionView:这个一般也和ifRoom连用,就是把控件折叠到一个按钮中,使用searchView应该选择该属性。
&&&&&&&&如果OptionMenu中需显示到ActionBar的菜单项过多,则可能因宽度不再,无法全部显示,默认情况下会在最右侧显示由3个小点组成的按钮,点击该按钮将可以弹出未能直接显示的菜单项,该位置通常称之为Overflow Menu即:溢出的菜单。
&&&&&&&&想更多了解Menu的属性,建议在官方文档查阅:
&&&&&&&&设置完成过后你就会发现是下面这个样子,基本上完全可以符合我们的大部分场景,我们可以自由的去使用它。
&&&&&&&&由于toolbar只是一个普通控件,我们将ToolBar设置为ActionBar,这样一设置后他就能像ActionBar一样直接显示menu目录中的菜单资源,如果不用该方法,那ToolBar就只是一个普通的View,对menu要用inflateMenu去加载布局。
&&&&&&&&我们还可以给它加上一个返回按钮,我们必须先让它取代ActionBar才可以:
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
&&&&&&&&设置它的监听事件:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
return super.onOptionsItemSelected(item);
&&&&&&&&我们想修改弹出菜单文件的颜色和背景以及显示位置怎么办呢,我们可以做如下设置:
toolbar.setPopupTheme(R.style.PopupMenu)
&style name="PopupMenu" parent="ThemeOverlay.AppCompat.Light" &
&item name="android:colorBackground"&@color/colorAccent&/item&
&item name="android:textColor"&@android:color/white&/item&
&item name="overlapAnchor"&false&/item&
&&&&&&&&现在看看是不是改变了,将overlapAnchor属性设置成false就可以在下方显示:
&&&&&&&&当然我们在代码里面设置的很多东西在XML里面也可以设置,看你喜好了,只不过有的东西设置要用toolbar的设置才有效,在根布局中加入自定义属性的命名空间即可,自定义布局的开发者一定很熟悉了,toolbar这个是可以随便命名的:
xmlns:toolbar="/apk/res-auto"
&&&&&&&&Toolbar相关的东西差不多讲完了,使用起来还是很方便的,肯定还是有一些没讲到或者讲错的,欢迎大家提出来共同进步。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13307次
排名:千里之外
原创:17篇
评论:13条
(1)(2)(4)(2)(1)(1)(2)(2)(1)(1)怎样调整toolbar中setNavigationIcon的图标大小
toolbar中setNavigationIcon()的图标太大了,怎样调整图片的大小?
-------------------------------
你试试&自定义主题,在主题中控制图标大小,然后把主题设置给toolbar&&看下能达到你想要的效果么
-------------------------------
引用&1&楼&q&的回复:
你试试&自定义主题,在主题中控制图标大小,然后把主题设置给toolbar&&看下能达到你想要的效果么
您好,不好意思我是新手,能否再说详细一些
-------------------------------
创建这个文件夹drawable-hdpi,drawable-ldpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi。然后把图片放到drawable-xxhdpi或者直接放到mipmap-xxhdpi中,不要创建这些文件夹=-=如果还不行=-=你看看放到mipmap其他文件夹看看。
-------------------------------
引用&3&楼&R_ine&的回复:
创建这个文件夹drawable-hdpi,drawable-ldpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi。然后把图片放到drawable-xxhdpi或者直接放到mipmap-xxhdpi中,不要创建这些文件夹=-=如果还不行=-=你看看放到mipmap其他文件夹看看。
-------------------------------
存放这个图片的文件夹的位置你都试过了吗=-=还有你的android:layout_height设置了"match_parent"&吗,还是设置了固定高度和宽度
-------------------------------
引用&5&楼&R_ine&的回复:
存放这个图片的文件夹的位置你都试过了吗=-=还有你的android:layout_height设置了"match_parent"&吗,还是设置了固定高度和宽度
您好,代码是这样的
&android.support.v7.widget.Toolbar
&&&&&&&&&&&&android:id="@+id/toolbar"
&&&&&&&&&&&&android:layout_width="match_parent"
&&&&&&&&&&&&android:layout_height="wrap_content"
&&&&&&&&&&&&android:background="@color/colorPrimary"&&/android.support.v7.widget.Toolbar&
private&Toolbar&mT
mToolbar&=&(Toolbar)&findViewById(R.id.toolbar);
mToolbar.setNavigationIcon(R.mipmap.ic_avatar);
然后就发现`R.mipmap.ic_avatar`大小不合适
-------------------------------
你可以拿张小图试试,然后实在不行就自定义一个标题头。
-------------------------------
其实最好的方法就是换一张图片,让UI做一张合适的图片
-------------------------------
@q&@R_ine&@3秒关
Android获取手机总内存和可用内存
安卓下面的webview配置问题 玩h5
Android自定义画虚线的控件
android studio 报错:ja
Google正式发布Android 3.
android-[IM]-仿微信聊天界面
实现ImageView和TextView
Android高效编程实践
eclipse连接真机调试,无法安装ap
Android Studio 运行程序包
Android访问网络图片部分代码
Android canvas绘制圆角折线
大家有没有这种的demo
怎样调整toolbar中setNavig
如何实现如下自定义的Toast
Android 颜色大全 colors.
phonegap中的html图片显示不能
Android获得状态栏和标题栏的高度
安卓自定义view圆形图谱中填充两层颜色
android 仿新浪微博搜索编辑框的实
Android背景渐变色(shape,g
设置为绘图区域为一个自定的区域???
cursor.getLong (0)返回
android自动更新版本,始终报“解析
如何通过代码获取以及设置android4
通过ContentProvider来读取
android工程混淆代码打包的APK安
'' operator is not
Android使用默认浏览器打开网页
Android阵营动荡,联想移动路在何方
怎样调整toolbar中setNavig
toolbar中setNavigatio...
fragmenttabhost与draw
布局如下:<?xml version="...
AndroidStudio使用没有显示M
写了个小程序,但是并没有显示内存占用,请...
为什么第二个Activity里的Edit
为什么,第一个里的EditText不会自...
SoundPool 播放音频的时候在小米
SoundPool 播放音频的时候在小米...
观察LogCat中的信息
MainActivity.javapac...
用popupwindow怎么实现
这是QQ空间访客页面的截图,想知道这个弹...
Windows下搭建Android CT
准备JDK,CTS packag...
基于MPAandroidChart画折线
第一次使用MPAandro...
怎么不能打开这个文件夹?
怎么不能打开这个文件夹?怎么不能打开这个...
引用#include "stdafx.h"#include ...
toolbar中setNavigationIcon()的图标太大了,怎样调整图片...
昨天在某新闻网站看了篇关于软文营销的文章,个人觉得写的真心不错,在文章中...
首先声明下笔者网站绝大部分内容是采集而来,也许站长朋友们一听到采集站,就会直接归...
网络营销基础知识是在做网络营销人员必不可少的,必须要了解和掌握的知识。在网络营销...
消费者往往购买产品时,除了产品本身的使用价值外,更多的是购买一种感觉、文化、期望...
  一、百度site和权重关系.  site中的排序上确实是按照网站权重来排序,...
一、基础体验:1.页面打开速度要保证;2.去掉页面冗余代码;3.是否有无内容...
今天榆次卓信科技SEO来分享一下发布外链的六个主要渠道,发布外链不用愁.1、问答...
布局如下:<?xml version="1.0" encoding="utf-8...
如题。MFC/OpenGL/QT?收集一下,准备重构目前的客户端框架。谢谢。QT...
使用了pullToRefresh和SwipeRefreshLayout。都会和j...
  据CNNIC(中国互联网络信息中心)数据报告显示,2011年中国网购交易额达...
  做网站我们就知道,对于地方性门户旅游网站来说,想要在这个旅游假期取得一个好的...
  说起年终总结,其实基本上没有真正的写过,以前到了年末写的日志,也仅仅算是小打...
俗话说,好的开端等于成功的一半。关键词的选取可谓SEO工作重要的一环。如...
网站优化通常伴随网站的整个生命周期,所以网站的SEO优化就不能够简单的关注相关的...
  许多SEO新手都会有这样的疑问:怎么的更新频率才是有利于网站优化的?不管是什...
网站跳出率一定程度上说明网站用户体验度的高低,网站是否对用户有吸引力,也是搜索引...
现在有一个char数组,里面的值是十进制数据,比如:unsigned char ...

我要回帖

更多关于 android toolbar icon 的文章

 

随机推荐