关于使用ActionBar要注意的几点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wfs31415926/article/details/52577143

1.参考博客:
a. http://blog.csdn.net/weihan1314/article/details/32142053(使用在activity中直接通过代码初始化ActionBar)
b. http://blog.csdn.net/afei__/article/details/51476096 (使用xml文件的形式初始化ActionBar)
c. http://blog.csdn.net/liu149339750/article/details/8282471(ActionBar的原理性解释)
2.自己通过验证发现的问题.
先是参考第一种方式进行的.但是在其中发现了问题:
A. 就是在代码中发现了.通过方法getActionBar()获取到的ActionBar是null.会导致下面使用时报空指针异常错误(NullPointeException).
参照博客:
a. http://www.tuicool.com/articles/ye2qQfu,尝试解决,但是没能实现.
b. http://blog.csdn.net/lincyang/article/details/46286895 ,结合ab一起使用,用getSupportActionBar()使正常获取到Actionbar(注意此处有个前提,activity必须是继承自有titleBar的activity,否则依然报错,此方法直接飘红,无法使用)程序正常跑起来了.actionBar也正常在标题栏所处的位置.但出现问题B.
B. ActionBar左右两侧各有一块空白无法覆盖,问题出现,继续解决问题.
参考博客:
a. http://blog.csdn.net/afei__/article/details/51476096 (使用了一部分,就是参照着将 activity中的 activitybar.setCustomView()关联上actionbar.xml文件),

    //自定义ActionBar  
        final ActionBar actionBar = getActionBar();  
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);  
        actionBar.setCustomView(R.layout.actionbar);//自定义ActionBar布局  

但发现在actionbar.xml中得toolbar中通过属性app:contentInsetStart无法解决左右空白的问题.

<android.support.v7.widget.Toolbar  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    app:contentInsetStart="0dp"  
    app:contentInsetEnd="0dp"  
    app:contentInsetLeft="0dp"  
    app:contentInsetRight="0dp"> 
</android.support.v7.widget.Toolbar> 

又想通过能不能获取到actionbar的params的方式,通过设置参数的形式来再activity中解决问题.但没能找到actionBar对应的getParams()方法.

b 最终走向了使用xml文件初始化actionBar的方式.参照的参考博客1.b 直接将toolbar写在了activity直接setContentView的布局文件中(此处注意要将activity本身自有的titleBar清除掉). 最终将自定义的actionBar显现出来. 但是出现问题C
C.在自定义的ActionBar中又出现了上下有一块空白的问题.
如图:
这里写图片描述
最终还是发现了是layout_height存在问题.将layout_height更改为?android:actionbarsize解决问题.
更改前:

<android.support.v7.widget.Toolbar
        style="@style/CustomActionBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar> 

更改后:

<android.support.v7.widget.Toolbar
        style="@style/CustomActionBarStyle"
        android:layout_width="match_parent"
        android:layout_height="?android:actionBarSize">
</android.support.v7.widget.Toolbar> 

3.总结.虽然最终将问题都解决了,但花费的时间过长
对次有以下想法:
a.对于问题,有现成博客的先抄过来<一字不改>,先试试能不能跑起来再说,别功能还没实现,就凭着自己的感觉到处“调整”,不知道可能就是你的调整会导致没有出现预想的结果.
b.a中的的道理明白,但到自己手上总不自觉的去改动一下东西.求助各位看客,怎么破?!!多谢了!

猜你喜欢

转载自blog.csdn.net/wfs31415926/article/details/52577143