binbinyang---Android的Menu同时显示Title的文字和图片,并且动态变化Title的坑(有二个解决办法,亲测)
2017-10-16 21:53
911 查看
让Menu同时显示图标和文字,并动态改变menu的title
今天在开发中,遇到了一个蛋疼的问题,
开始以为是自己代码有错,debug看了后发现不是地图获取当前定位的问题
接下来,老规矩直接上图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201710/16/7be9daf9eaae748b00b17b21f7dae9e2)
右上角是一个menu的title+icon ,但是写完只有 icon是出来了 可是title死活出不来
解决办法:
方法一:
在menu.xml文件中配置了图标和文字,但是在有图标的情况下文字是不会显示的,即使设置 app:showAsAction="always|withText" 但是我在运行的时候发现并没有显示文字,处理方法是通过另外一个属性实现app:actionLayout.
首先menu.xml定义如下:
app:actionLayout指向了一个布局,可以在这个布局中定义你想要的控件。我的定义是这样的。
layout_icon_city
android:drawableLeft中指定你的图标。
然后还要在onCreateOptionsMenu中重写一下Menu的点
其中如果你先变化title的内容
方法二:
Activity中的menu条目,在设置其showAsAction="never"时,默认只显示文字title,而不会显示图标icon,可以在Activity中重写onMenuOpened(),通过反射使其图标可见。
今天在开发中,遇到了一个蛋疼的问题,
开始以为是自己代码有错,debug看了后发现不是地图获取当前定位的问题
接下来,老规矩直接上图
右上角是一个menu的title+icon ,但是写完只有 icon是出来了 可是title死活出不来
解决办法:
方法一:
在menu.xml文件中配置了图标和文字,但是在有图标的情况下文字是不会显示的,即使设置 app:showAsAction="always|withText" 但是我在运行的时候发现并没有显示文字,处理方法是通过另外一个属性实现app:actionLayout.
首先menu.xml定义如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/city" android:title="" android:orderInCategory="100" app:showAsAction="always|withText" app:actionLayout="@layout/layout_icon_city" /> </menu>
app:actionLayout指向了一个布局,可以在这个布局中定义你想要的控件。我的定义是这样的。
layout_icon_city
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_city_add_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp" android:gravity="center" android:text=" " android:drawableRight="@mipmap/ic_select_city" android:textColor="#000000" android:clickable="true" />
android:drawableLeft中指定你的图标。
然后还要在onCreateOptionsMenu中重写一下Menu的点
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_select_city, menu); final MenuItem item = menu.findItem(R.id.city); TextView mCityName = (TextView) item.getActionView().findViewById(R.id.tv_city_add_icon); mCityName.setText(mCity); item.getActionView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onOptionsItemSelected(item); } }); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.city: Actions.startSelectCityActivity(getActivity()); break; } return super.onOptionsItemSelected(item); }
其中如果你先变化title的内容
inflater.inflate(R.menu.menu_select_city, menu); final MenuItem item = me:nu.findItem(R.id.city); TextView mCityName = (TextView) item.getActionView().findViewById(R.id.tv_city_add_icon); mCityName.setText(mCity);
方法二:
Activity中的menu条目,在设置其showAsAction="never"时,默认只显示文字title,而不会显示图标icon,可以在Activity中重写onMenuOpened(),通过反射使其图标可见。
// 让菜单同时显示图标和文字 @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); }
相关文章推荐
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- Android--在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- 【Android】在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- Android自定义组件,实现图片和文字同时显示
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- binbinyang---Android实现显示GIF图片
- 关于Android加载HTML页面中的图片显示问题的解决办法
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法
- iphone 界面不能显示图片,文字问题的一般解决办法
- Android在Button按钮上同时显示文字和图片
- Android TextView文字太多显示的最后一行被盖住一半的解决办法
- Android之PhtoView设置图片放大缩小后,图片显示在界面上左上角的解决办法
- Android显示图片崩溃的解决办法
- Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少
- Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少
- [转]动态更新Toolbar Menu以及Menu中同时显示文字和图标
- UIButton setImage setTitle上同时显示图片和文字的方法(最有效)
- android 实现图片旋转,移动,缩放,并且记录变化值,用另外一张图片显示出来
- Android PhtoView 图片放大缩小后,图片显示在界面上左上角的解决办法