關於使用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.
b. http://blog.csdn.net/lincyang/article/details/46286895 ,結合ab一起使用,用getSupportActionBar()使正常獲取到Actionbar(注意此處有個前提,activity必須是繼承自有titleBar的activity,否則依然報錯,此方法直接飄紅,無法使用)程式正常跑起來了.actionBar也正常在標題欄所處的位置.但出現問題B.
B. ActionBar左右兩側各有一塊空白無法覆蓋,問題出現,繼續解決問題.
參考部落格:
a.
//自定義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中的的道理明白,但到自己手上總不自覺的去改動一下東西.求助各位看客,怎麼破?!!多謝了!