【前言】
最近观看了幕课网的仿制微信6.0界面的视频,记录一些学习中碰到的问题,方便自己以后总结,学习。
【开发环境】
Eclipse +Android Developer Tools+bluestack调试
【Actionbar】
一、什么是ActionBar
二、如何使用ActionBar
**1、添加操作项,即图中文字所在位置**
**2.代码调用**
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
**3.项目的增加以及删除在menu目录下的main.xml**
三、遇到的问题
***1.menu图标不显示***
解决方法 为actionbar添加样式
步骤1:在AndroidMainfest中用ctrl+鼠标左键点击theme进入到style
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionOverflowButtonStyle">@style/weixinActionOverflowButtonStyle</item>
</style>
<style name="weixinActionOverflowButtonStyle">
<item name="android:src">@drawable/actionbar_add_icon</item>
</style>
自定义方法强制显示OverflowButton
private void setOverflowButtonAlways() {
// TODO Auto-generated method stub
try
{
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKey = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
menuKey.setAccessible(true);
menuKey.setBoolean(config, false);
} catch (Exception e)
{
e.printStackTrace();
}
}
在Oncreate中调用并且隐藏标题的icon
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setOverflowButtonAlways();
getActionBar().setDisplayShowHomeEnabled(false);
}
显示Menu中的图标
“`
//利用了Java的反射机制去修改系统默认设置
public boolean onMenuOpened(int featureId, Menu menu) {
//判断是否是actionbar且menu是否不等于Null
if(featureId==Window.FEATURE_ACTION_BAR&&menu!=null){
//找到menu的实际实现类MenuBuilder
if(menu.getClass().getSimpleName().equals(“MenuBuilder”)){
try {
//同样先获取到需要调用的method setOptionalIconsVisible为其中的方法
Method m=menu.getClass().
getDeclaredMethod(“setOptionalIconsVisible”,Boolean.TYPE);
//设为可访问
m.setAccessible(true);
//调用方法
m.invoke(menu,true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
4.流程以及步骤 “`
1.在工程下values下的string中添加所用到的中文
2.在menu文件下的main.xml中设置topbar的item属性
3.使用VIEWPAGE实现控件中间区域可滑动模块,并在mainactivity中配置fragment