Actionbar的学习

最近喜欢上看英文的,经过几次的搜索中文后,发现中文没看懂,反而英文看懂了,想直接看英文的,不懂在看中文,会发现很多中文的,都是看了英文的,再自己进行转译的。

参考资料:

  • Android Working with Action Bar这篇很详细,主要是搜索框spinner图标的添加
    注意几点:
    • ActionBar的布局文件的设置在res->menu->activity_main_actions.xml
    • 主Activity通过onCreateOptionsMenu方法进行初始化。例如:
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_main_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }
  • 通过onOptionsItemSelected进行触发子项的点击事件。例如:Mm
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_search:
        // search action
        return true;
    case R.id.action_location_found:
        // location found
        LocationFound();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
  • Android Tab Layout with Swipeable Views -->微信前几板块的tabhost的切换

  • 改变actionbar的整体颜色:Android – Theming ActionBar and the SearchView within it,这个设置比较漂亮,但是要用上android-support-v7-appcompat,如何使用这个appcompat,情况这里【Android】設定 Support Library

  • 知识点:

    • 1.menu的显示方式boolean android.app.Activity.onCreateOptionsMenu(Menu menu)的方法中,加入

      MenuItem actionItem = menu.add("Action Button");
      actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    一共有5种显示方式:从不显示;如果有空间就显示;总是显示;显示时跟随文字;默认收缩其action view
    > public static final int SHOW_AS_ACTION_NEVER = 0;
    public static final int SHOW_AS_ACTION_IF_ROOM = 1;
    public static final int SHOW_AS_ACTION_ALWAYS = 2;
    public static final int SHOW_AS_ACTION_WITH_TEXT = 4;
    public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8;

注意:
SHOW_AS_ACTION_WITH_TEX竖屏状态不会显示,只有横屏的时候就会显示
设置了action view默认是显示的,设置SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW则默认不显示。

  • 2.此方法设置后退或者点击的效果setDisplayHomeAsUpEnabled(true)

    • 2.1actionbar上显示后退的按钮。

    • oncreate方法上加入:

// get action bar   
ActionBar actionBar = getActionBar();
// Enabling Up / Back navigation
actionBar.setDisplayHomeAsUpEnabled(true);
  • 并且:在androidmanifest.xmnl相应的加入android:parentActivityName,例如


将会回退到父系的`MainActivity`上。![Alt text](http://www.androidhive.info/wp-content/uploads/2013/11/android-action-bar-up-back-navigation.png?a942c6)
  • 2.2actionbar点击的效果
    • oncreate加入:
      > actionBar.setDisplayHomeAsUpEnabled(true);

    • onOptionsItemSelected中的id为:android.R.id.home

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        
        toggle(); //动态判断自动关闭或开启SlidingMenu
        return true;
    }
    return super.onOptionsItemSelected(item);
}
3.修改`actionbar`的样式,一种静态,一种动态,静态就直接在xml导入`style`属性,[Android Action Bar Style Generator](http://jgilfelt.github.io/android-actionbarstylegenerator/),所有主题的样式都用,包括`.9.png`图片。动态如下:
  • 修改背景
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(0xadf1b1ff));
  • 修改actionbar的分割线
``` 
@null
```

奇怪的错误

  • actionbar不见了,发现最新的sdk里面用v7包的Theme.Appcompat.Light主题已经默认不带actionbar了,跟以前发生了很大的区别,导致getActionBar()的时候,得到的值为null。
  • 教程:
    【Android】啟用 Support Library 的 ActionBar
    Android ActionBar完全解析,使用官方推荐的最佳导航栏
    Android ActionBar的基本用法
    enter link description here
    修改样式的类型:
    Android中自定义ActionBar的背景色等样式style
    Android 弹无虚发之第三弹:ActionBar 更换背景、颜色、文字,自定义主题Style
  • 扩展知识:.9.png的制作,有强大的在线制作工具
    研究Android中的9 patch的图片的原理以及如何去生成对应图片
  • 资源:
    Google 提供了一整套的 ActionBar 圖示讓開發人員下載使用

你可能感兴趣的:(Actionbar的学习)