自定義Toolbar的標題發現的問題;APP程序名爲空。

問題描述:

在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。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章