android toolbar定位,一文详解Xamarin Android Toolbar

前文传送门

网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费。如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到这篇文章,说明还是搜了xamarin android toolbar。那么这篇文章就好好总结一下toolbar在xamarin android中如何使用,减少大家踩坑的时间。

01 了解Toolbar

android3.0推了ActionBar这个控件,android5.0开始推出Materal Design,其中就有ToolBar控件。可能官方觉得ActionBar限制app开发设计的弹性,google非常推荐大家使用ToolBar来作为客户端的导航栏,以此来取代ActionBar。

ToolBar使用更灵活,设计更多样性。主要的优点有1.可以设置导航栏图标、Logo、标题和子标题等属性; 2可添加自定义控件;3.支持Action Menu;4.可随意设置位置

02 xamarin android中使用Toolbar

官方为了将toolbar这一控件向下兼容,推出了兼容版的toolbar,所以首先的引入Android.Support.V7.AppCompat。我们先来看看最终完成的整体的效果图

690ca3dede87dd9f67860b0253646202.png

写第一个Toolbar例子,然后我们看一下布局文件:<?xml  version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/color_white"

android:fitsSystemWindows="true">

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="60dp"

android:background="@color/color_primary"

android:navigationIcon="@drawable/icon2"

android:logo="@drawable/icon"

android:subtitle="子标题"

android:title="标题"

android:titleTextColor="@color/color_white">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="自定义文本">

c0026cf652cbfdaae768a8625c57c274.png

记得在Activity继承AppCompatActivity,现在运行的结果是并没有看到标题、子标题、logo等属性。

1d712597c9514cb11d9d7d5f8d98e7a7.png

c0026cf652cbfdaae768a8625c57c274.pnge8788d99619a730cfbf270e9bf822125.png

03 设置Toolbar属性不能使用android:**** 而使用app:*****

我们没有看到这些设置的属性很正常,我们使用android:*** 找不到的属性,应该使用Toolbar这个控件自带的属性。所以我在根布局加了

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="60dp"

android:background="@color/color_primary"

android:navigationIcon="@drawable/icon2"

android:logo="@drawable/icon"

android:subtitle="子标题"

android:title="标题"

android:titleTextColor="@color/color_white">

36478fb405b5acbf7cbbd3e0dd70fcba.png

现在我们能看到已经设置白色的标题文本,navigationIcon、logo、子标题。但是尴尬的是子标题的颜色subTitleTextColor属性报错,虽然可以通过代码SetSubtitleTextColor方法设置,但是这个子标题文本颜色这个subTitleTextColor属性不能通过编译有点难以理解。后来才发现subTitleTextColor属性Title要小写,jbwy,也就是这样app:subtitleTextColor

36478fb405b5acbf7cbbd3e0dd70fcba.png

c0026cf652cbfdaae768a8625c57c274.png

04 添加ActionMenu 菜单项

toolbar可以添加菜单项,在Resources文件下建一个menu文件夹专门放菜单。先来看一下actionMenu.xml 菜单项文件,然后在代码实现方法。<?xml  version="1.0" encoding="utf-8" ?>

xmlns:app="http://schemas.android.com/apk/res-auto">

android:icon="@drawable/edit"

android:title="编辑"

app:showAsAction="ifRoom"/>

android:icon="@drawable/search"

android:title="搜索"

app:showAsAction="ifRoom"/>

android:icon="@drawable/add"

android:title="添加"

app:showAsAction="ifRoom"/>

c0026cf652cbfdaae768a8625c57c274.png

MainActivity代码如下:using Android.App;using Android.Views;using Android.Widget;using Android.OS;using Android.Support.V7.App;namespace ToolbarDemo{    [Activity(Label = "ToolbarDemo", MainLauncher = true, Icon = "@drawable/icon",Theme ="@style/AppTheme")]

public class MainActivity : AppCompatActivity

{

protected override void OnCreate(Bundle bundle)

{

base.OnCreate(bundle);

SetContentView(Resource.Layout.Main);

Android.Support.V7.Widget.Toolbar toolbar = FindViewById(Resource.Id.toolbar);

toolbar.InflateMenu(Resource.Menu.actionMenu); //填充actionMenu菜单项            toolbar.MenuItemClick += (s, e) => //菜单项单击事件            {

switch (e.Item.ItemId)

{

case Resource.Id.menu_add:

Toast.MakeText(this, "添加菜单项", ToastLength.Short).Show();

break;

case Resource.Id.menu_edit:

Toast.MakeText(this, "编辑菜单项", ToastLength.Short).Show();

break;

case Resource.Id.menu_search:

Toast.MakeText(this, "搜索菜单项", ToastLength.Short).Show();

break;

}

};

}

public override bool OnCreateOptionsMenu(IMenu menu)

{

return base.OnCreateOptionsMenu(menu);

}

}}

关于showAsAction 展现在Action条目中的几个属性值有这几个:always:使菜单项一直显示在ToolBar上。

ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。

never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。

withText:使菜单项和它的图标,菜单文本一起显示。

###05 toolbar中使用setSupportActionBar方法菜单项不见了

如果在onCreate方法里面使用兼容包的方法SetSupportActionBar(toolbar) 后发现菜单项不显示了,这就有点尴尬了,所以要在OnCreateOptionsMenu方法中加上一句代码加载菜单项才能显示public override bool OnCreateOptionsMenu(IMenu menu){

MenuInflater.Inflate(Resource.Menu.actionMenu,menu);

return base.OnCreateOptionsMenu(menu);}

c0026cf652cbfdaae768a8625c57c274.png

06 toolbar中设置菜单项图标颜色、自定义菜单图标、设置菜单项文字颜色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值