Android--Toolbar基本使用
谷歌最初推出Actionbar想用于安卓app统一导航行样式,但由于Actionbar自定义性不高,又不是很好看(很丑),民间开发出了另一种控件并被谷歌收入v7包下,它就是Toolbar
使用Toolbar有几点要注意的(这边使用的v7包的Toolbar,由于继承Activity已经过时,但如果实在想继承Activity的话,使用v4包下的Toolbar):
1.App主题使用NoActionBar
2.Activity需要继承AppCompatActivity
3.在代码中调用setSupportActionBar方法替换Actionbar
在xml中使用Toolbar:
-
<?xml version="1.0" encoding="utf-8"?>
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
xmlns:app="http://schemas.android.com/apk/res-auto"
-
xmlns:tools="http://schemas.android.com/tools"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
tools:context=".MainActivity">
-
-
<android.support.v7.widget.Toolbar
-
android:id="@ id/tb_demo"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:background="@color/colorPrimary"></android.support.v7.widget.Toolbar>
-
</LinearLayout>
在代码中设置属性,也可以在xml中使用app:属性名 直接设置
-
public class MainActivity extends AppCompatActivity {
-
private Toolbar toolbar;
-
-
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
toolbar = findViewById(R.id.tb_demo);
-
toolbar.setTitle("主标题");
-
toolbar.setSubtitle("副标题");
-
//设置左侧导航图标
-
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
-
//设置导航点击监听
-
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
-
-
public void onClick(View v) {
-
-
}
-
});
-
setSupportActionBar(toolbar);
-
}
-
}
和Actionbar相同,Toolbar也支持菜单栏,我们需要在xml中定义,用法和NavigationView的菜单一样
-
<?xml version ="1.0" encoding ="utf-8"?><!-- Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
-
<menu xmlns:android="http://schemas.android.com/apk/res/android"
-
xmlns:app="http://schemas.android.com/apk/res-auto">
-
<item
-
android:title="搜索"
-
app:showAsAction="always" />
-
-
<item
-
android:title="其他"
-
app:showAsAction="never" />
-
<item
-
android:title="设置"
-
app:showAsAction="ifRoom" />
-
</menu>
其中app:showAsAction可以设置item的显示,always表示一直显示,never表示一直放入overflow中(右侧更多图标的按钮),ifRoom表示如果显示不下,则放入overflow中,定义好xml后,需要在Activity中改写onCreateOptionsMenu方法
-
-
public boolean onCreateOptionsMenu(Menu menu) {
-
getMenuInflater().inflate(R.menu.menu, menu);
-
return super.onCreateOptionsMenu(menu);
-
}
和NavigationView源码中一样使用的getMenuInflater方法获取xml解析器,在这里可以绑定点击事件,也可以通过Toolbar的setOnMenuItemClickListener方法设置,效果:
弹框的样式可以通过Toolbar的setPopupTheme方法改变
还可以通过style设置Toolbar的字体颜色,如设置副标题颜色:
-
<!-- Base application theme. -->
-
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
-
<!-- Customize your theme here. -->
-
<item name="colorPrimary">@color/colorPrimary</item>
-
<!--设置状态蓝颜色-->
-
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-
<item name="colorAccent">@color/colorAccent</item>
-
<!--副标题及overflow颜色-->
-
<item name="android:textColorSecondary">#ffa000</item>
-
</style>
除此以外,Toolbar还有这些API
-
ToolBar API
-
collapseActionView()
-
折叠当前展开了行动视图。
-
-
showOverflowMenu()
-
从显示相关的菜单溢出项目。
-
-
dismissPopupMenus()
-
关闭所有当前显示弹出式菜单,包括溢出或子菜单。
-
-
isOverflowMenuShowing()
-
检查溢出菜单是否正在显示。
-
-
inflateMenu(int resId)
-
膨胀的菜单资源到这个工具栏。
-
-
hideOverflowMenu()
-
隐藏关联菜单溢出项目。
-
-
-
setContentInsetEndWithActions(int insetEndWithActions)
-
设置开始的内容插入时操作按钮都存在使用。
-
-
-
setContentInsetStartWithNavigation(int insetStartWithNavigation)
-
设置启动内容插入时,导航按钮存在使用。
-
-
-
setContentInsetsRelative(int contentInsetStart, int contentInsetEnd)
-
设置此相对布局方向工具栏的内容插图。
-
-
setLogo(Drawable drawable)
-
设置一个Log图片。
-
-
setLogoDescription(int resId)
-
设置Log的说明。
-
-
setNavigationContentDescription(CharSequence description)
-
如果存在设置导航按钮的内容。
-
-
setNavigationOnClickListener(View.OnClickListener listener)
-
设置一个侦听器来导航事件
-
-
setOverflowIcon(Drawable icon)
-
设置图标使用的溢出按钮。
-
-
setSubtitle(CharSequence subtitle)
-
设置此工具栏的字幕。
-
-
setSubtitleTextAppearance(Context context, int resId)
-
设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。
-
-
setTitleMargin(int start, int top, int end, int bottom)
-
设置标题边距。
-
-
setTitleTextAppearance(Context context, int resId)
-
设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。
-
-
setTitleTextColor(int color)
-
设置标题的文本颜色,如果存在的话
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfagbh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01