問題描述:
在toolbar中,標題自動靠左對齊,標題默認爲白色。自定義標題想使它居中顯示並且改變顏色,可以將原本的label的值設置爲空,再在toolbar中創建一個TextView用於顯示標題。
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ToolbarPopupTheme"
app:layout_scrollFlags="scroll|enterAlways|snap">
<!--app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>-->
<TextView
android:id="@+id/title_toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorOrange"
android:layout_gravity="center_horizontal"
android:text="Title"
android:textSize="18sp"/>
</android.support.v7.widget.Toolbar>
此時toolbar爲:
在toolbar的theme的style中也可以設置toolbar中的文字大小:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:textSize">10sp</item>
<item name="android:textColor">@color/colorBlack</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
但是當標題的文字大小和顏色已經在TextView中確定的情況下,在style中設置的文字參數對標題並不生效,運行的結果仍和之前一樣。如果沒有在TextView中設置,style中的參數纔會對標題生效。
<TextView
android:id="@+id/title_toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Title"/>
結論:
在style中設置的參數對toolbar全局生效,而在toolbar中自定義的控件可以設置自己的參數,若沒有設置則統一採用style中的設置。通過這種方式,當menu中設置了item並有文字時,可以實現對自定義控件和item的參數分別設置。
後續:
在設置MainActivity的label爲空時,一開始是直接在Manifest的Activity中設置android:label爲空
<activity android:name=".MainActivity"
android:label="">
發現在手機桌面上的App名字也爲空了,只有一個圖標。原因是主活動裏設置的label會覆蓋application中的label。解決方式:不在Manifest中設置主活動的label,而在MainActivity.java中用toolbar.setTitle()設置label。
<activity android:name=".MainActivity">
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.main_toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
。。。。。。
}
這樣設置就可以讓程序名應用application中的label,並且去掉主活動中原有的label。