1. 程式人生 > >關於使用ActionBar要注意的幾點

關於使用ActionBar要注意的幾點

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中的的道理明白,但到自己手上總不自覺的去改動一下東西.求助各位看客,怎麼破?!!多謝了!