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相应的<Activity >加入android:parentActivityName,例如
<activity
    android:name="info.androidhive.actionbar.LocationFound"
    android:label="@string/activity_new_message"
    android:parentActivityName="info.androidhive.actionbar.MainActivity" >
</activity>
将会回退到父系的`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的分割线
``` 
<item name="android:actionBarDivider">@null</item>
```

奇怪的错误

  • actionbar不见了,发现最新的sdk里面用v7包的Theme.Appcompat.Light主题已经默认不带actionbar了,跟以前发生了很大的区别,导致getActionBar()的时候,得到的值为null。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容