为什么android在xml中定义菜单的菜单无法显示出来,ToolBar详解和menu结合使用及menu图标不显示问题...

Toolbar 引入使用

xml布局中加入

#434343

android:id="@+id/tool_bar"

android:layout_width="match_parent"

android:layout_height="?actionBarSize"

android:background="@color/weixin_bg"

android:theme="@style/AppTheme.ToolBar"

app:title="@string/app_name"/>

主题改为隐藏ActionBar:

@color/colorPrimary

@color/weixin_bg

@color/colorAccent

Activity代码中加入:

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

ToolBar 样式:

@android:color/white

@android:color/white

@style/ActionButton.Overflow

false

@color/weixin_bg

@android:color/white

0dp

0dp

@drawable/actionbar_add_icon

解决菜单Menu添加Icon无效问题,让菜单同时显示图标和文字

在使用过程中发现溢出菜单menu 只显示文字不显示图标:使用反射,要重写一个onMenuOpened()方法即可解决。

/**

* 利用反射机制调用MenuBuilder的setOptionalIconsVisible方法设置mOptionalIconsVisible为true,

* 给菜单设置图标时才可见 让菜单同时显示图标和文字

*/

@Override

public boolean onMenuOpened(int featureId, Menu menu) {

if (menu != null) {

if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {

try {

Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);

method.setAccessible(true);

method.invoke(menu, true);

} catch (Exception e) {

e.printStackTrace();

}

}

}

return super.onMenuOpened(featureId, menu);

}

ToolBar 属性设置

添加背景色:

#434343

android:background="@color/weixin_bg"

基本属性设置

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="@color/colorPrimary"

app:navigationIcon="@mipmap/title_bar_back"//左侧图标

app:subtitle="子标题"

app:subtitleTextColor="#fff" //子标题颜色

app:title="标题"

app:titleTextColor="#fff"/> //标题颜色

添加选项菜单menu

创建menu

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

android:id="@+id/action_search"

android:icon="@drawable/actionbar_search_icon"

android:title="@string/action_search"

app:actionViewClass="android.widget.SearchView"

app:showAsAction="ifRoom|collapseActionView"/>

android:id="@+id/action_group_chat"

android:icon="@drawable/menu_group_chat_icon"

android:title="@string/menu_group_chat"/>

android:id="@+id/action_add_friend"

android:icon="@drawable/menu_add_icon"

android:title="@string/menu_add_friend"/>

android:id="@+id/action_scan"

android:icon="@drawable/men_scan_icon"

android:title="@string/menu_scan"/>

android:id="@+id/action_feedback"

android:icon="@drawable/menu_feedback_icon"

android:title="@string/menu_feedback"/>

showAsAction:属性有五个之:ifRoom、never、always、withText、collapseActionView

ifRoom:如果有空间,就显示出来

never:永远不会显示。只在溢出列表中显示,而且只显示标题

always:无论是否溢出,总会显示

withText:示意ActionBar要显示文本的标题。ActionBar会尽可能的显示这个标题,但是,如果图标有效并且受到ActionBar空间的限制,文本标题就有可能显示不全

collapseActionView:声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占还有操作栏的有效空间,一般要配合ifRoom一起使用才有效

代码中重写onCreateOptionsMenu方法加载菜单文件

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.toolbar_menu, menu);

return super.onCreateOptionsMenu(menu);

}

左侧返回箭头

想要显示自带的返回箭头,需要去掉之前设定的属性:

app:navigationIcon="@mipmap/title_bar_back"

然后在代码中添加:

getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

溢出图标颜色

@android:color/white

自定义右侧溢出图标

@android:color/white

@android:color/white

@style/ActionButton.Overflow

@drawable/actionbar_add_icon

更改弹出菜单背景

@color/weixin_bg

更改弹出菜单文字颜色

@android:color/white

修改标题文字大小

添加配置:

app:titleTextAppearance="@style/ToolbarTitleSize"

添加style:

28sp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CollapsingToolbarLayout显示工具栏的标志,图标,标题和副标题,你需要在布局文件使用CollapsingToolbarLayout和Toolbar。 在Toolbar设置logo和标题,你可以使用以下代码: ```xml <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:logo="@drawable/logo" android:title="Title"/> ``` 要在CollapsingToolbarLayout显示标题和副标题,你可以使用以下代码: ```xml <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"/> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:src="@drawable/background_image" app:layout_collapseMode="parallax"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Title" app:layout_collapseMode="pin"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Subtitle" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> ``` 在这个例子,ImageView使用了parallax属性,允许图像在CollapsingToolbarLayout滚动时以不同的速度滚动。 注意:要使用CollapsingToolbarLayout和Toolbar,你需要在你的build.gradle文件添加以下依赖项: ```gradle implementation 'com.android.support:design:28.0.0' ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值