คุณตั้งค่าสีชื่อสำหรับ Toolbar ใหม่ได้อย่างไร?


119

ฉันใช้แถบเครื่องมือ v7 ใหม่และฉันคิดไม่ออกว่าจะเปลี่ยนสีของชื่อเรื่องได้ตลอดชีวิต ฉันได้ตั้งค่า @style ของ Toolbar เป็นสไตล์ที่ประกาศใน styles.xml และใช้ titleTextStyle กับ textColor ฉันพลาดอะไรไปรึเปล่า? ฉันกำลังเข้ารหัสสำหรับ Lollipop แต่กำลังทดสอบกับอุปกรณ์ Kitkat

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="ActionBar" parent="Theme.AppCompat">
        <item name="android:background">@color/actionbar_background</item>
        <item name="android:titleTextStyle">@style/ActionBar.TitleTextStyle</item>
    </style>

    <style name="ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/actionbar_title_text</item>
    </style>

</resources>

actionbar.xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar_actionbar"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    style="@style/ActionBar"/>

คำตอบ:


241

ตัวเลือกที่ 1) วิธีที่ง่ายและรวดเร็ว (แถบเครื่องมือเท่านั้น)

เนื่องจาก appcompat-v7-r23 คุณสามารถใช้แอตทริบิวต์ต่อไปนี้ได้โดยตรงกับToolbarสไตล์ของคุณ:

app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"

หาก SDK ขั้นต่ำของคุณคือ 23 และคุณใช้เนทีฟToolbarเพียงแค่เปลี่ยนคำนำหน้าเนมสเปซเป็นandroid.

ใน Java คุณสามารถใช้วิธีการต่อไปนี้:

toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);

วิธีการเหล่านี้ใช้ int สีไม่ใช่รหัสทรัพยากรสี!

ตัวเลือกที่ 2) แทนที่ลักษณะของแถบเครื่องมือและคุณลักษณะของธีม

รูปแบบ / xxx.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.MyApp.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    style="@style/Widget.MyApp.Toolbar.Solid"/>

ค่า / styles.xml

<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/actionbar_color</item>
    <item name="android:elevation" tools:ignore="NewApi">4dp</item>
    <item name="titleTextAppearance">...</item>
</style>

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <!-- Parent theme sets colorControlNormal to textColorPrimary. -->
    <item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>

ช่วยด้วย! ไอคอนของฉันก็เปลี่ยนสีด้วย!

@PeterKnut รายงานว่าสิ่งนี้มีผลต่อสีของปุ่มล้นปุ่มลิ้นชักการนำทางและปุ่มย้อนกลับ นอกจากนี้ยังเปลี่ยนสีข้อความของSearchView.

เกี่ยวกับสีของไอคอน: colorControlNormalสืบทอดมาจาก

  • android:textColorPrimary สำหรับธีมสีเข้ม (สีขาวบนสีดำ)
  • android:textColorSecondary สำหรับธีมแสง (สีดำบนสีขาว)

หากคุณใช้สิ่งนี้กับธีมของแถบการกระทำคุณสามารถปรับแต่งสีไอคอนได้

<item name="colorControlNormal">#de000000</item>

มีข้อผิดพลาดใน appcompat-v7 ถึง r23 ซึ่งทำให้คุณต้องลบล้างคู่หูดั้งเดิมเช่นนี้:

<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>

ช่วยด้วย! SearchView ของฉันยุ่งเหยิง!

หมายเหตุ: ส่วนนี้อาจล้าสมัย

เนื่องจากคุณใช้เครื่องมือค้นหาซึ่งด้วยเหตุผลบางอย่างใช้ลูกศรย้อนกลับแตกต่างกัน (ไม่ได้เห็นในทางเทคนิค) มากกว่าหนึ่งที่มาพร้อมกับ AppCompat-v7, คุณจะต้องตั้งด้วยตนเองในรูปแบบของแอป สิ่งที่วาดได้ของไลบรารีสนับสนุนได้รับการย้อมสีอย่างถูกต้อง มิฉะนั้นจะเป็นสีขาวเสมอ

<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

สำหรับข้อความมุมมองการค้นหา ... ไม่มีวิธีง่ายๆ หลังจากขุดดูแหล่งที่มาฉันพบวิธีเข้าสู่มุมมองข้อความ ฉันยังไม่ได้ทดสอบดังนั้นโปรดแจ้งให้เราทราบในความคิดเห็นหากไม่ได้ผล

SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color

โบนัส: แทนที่สไตล์ ActionBar และคุณลักษณะของธีม

รูปแบบที่เหมาะสมสำหรับแถบการกระทำ appcompat-v7 เริ่มต้นจะมีลักษณะดังนี้:

<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="background">@color/actionbar_color</item> <!-- No prefix. -->
    <item name="elevation">4dp</item> <!-- No prefix. -->
    <item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>

<style name="Theme.MyApp" parent="Theme.AppCompat">
    <item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
    <item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>

2
การแก้ปัญหานี้มีผลข้างเคียงต่างๆ textColorPrimary ถูกนำไปใช้กับปุ่มลิ้นชักการนำทางและข้อความในวิดเจ็ตการค้นหา นอกจากนี้สีของปุ่มย้อนกลับถูกตั้งค่าเป็นสีขาว (อย่าถามฉันว่าทำไม)
Peter Knut

@PeterKnut ในเวลานั้นฉันไม่ทราบว่าโซลูชันที่เสนอนั้นไม่สมบูรณ์เพียงใด หลังจากแก้ไข - นี่คือวิธีที่ฉันใช้และได้ผล อย่างไรก็ตามโปรดตรวจสอบตัวอย่างสีข้อความในมุมมองการค้นหา
Eugen Pechanec

ตอนนี้ทำงานได้เกือบถูกต้องแล้ว หมายเหตุสองประการ: การขุดข้อความในวิดเจ็ตการค้นหาไม่ใช่ความคิดที่ดี ID ของมันสามารถเปลี่ยนแปลงได้ในอนาคต คุณสมบัติพื้นหลังใน Widget.MyApp.ActionBar ยังส่งผลต่อพื้นหลังในปุ่มและคำแนะนำเครื่องมือ ต้องตั้งค่าพื้นหลังใน <android.support.v7.widget.Toolbar> โดยตรง
Peter Knut

ฉันเห็นด้วยไม่ใช่ความคิดที่ดีอย่างน้อยฉันจะเพิ่มการตรวจสอบว่างที่นั่น (อย่างไรก็ตามอัตราต่อรองของ id นั้นเปลี่ยนไป) เกี่ยวกับพื้นหลัง: คุณไม่ถูกต้องถ้าคุณเพิ่มเป็นสไตล์ให้กับองค์ประกอบแถบเครื่องมือพื้นหลังจะใช้กับวิดเจ็ตแถบเครื่องมือเท่านั้น หากคุณจะกำหนดพื้นหลังในThemeOverlayและใช้เป็นธีมพื้นหลังขององค์ประกอบลูกทุกตัวก็จะมีสีเช่นกัน
Eugen Pechanec

ตกลงคุณพูดถูกกับสไตล์กับธีม ความผิดพลาดของฉัน.
Peter Knut

40

นี่คือทางออกของฉันหากคุณต้องการเปลี่ยนเฉพาะสีของชื่อเรื่องและไม่ใช่สีของข้อความในวิดเจ็ตการค้นหา

รูปแบบ / toolbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:background="@color/toolbar_bg"
    app:theme="@style/AppTheme.Toolbar"
    app:titleTextAppearance="@style/AppTheme.Toolbar.Title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"/>

ค่า / themes.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
    </style>

    <style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
        <!-- Customize color of navigation drawer icon and back arrow --> 
        <item name="colorControlNormal">@color/toolbar_icon</item>
    </style>

    <style name="AppTheme.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
        <!-- Set proper title size -->
        <item name="android:textSize">@dimen/abc_text_size_title_material_toolbar</item>
        <!-- Set title color -->
        <item name="android:textColor">@color/toolbar_title</item>
    </style>
</resources>

ในทำนองเดียวกันคุณสามารถตั้งค่า subtitleTextAppearance


ฉันประสบปัญหาที่สีของชื่อเรื่องจะแตกต่างกันไปขึ้นอยู่กับว่าแถบเครื่องมือนั้นมีอยู่ใน Fragment หรือในกิจกรรม การใช้เคล็ดลับนี้เพื่อลบล้างสีเป็นวิธีเดียวที่ฉันสามารถหาได้ (วิธีอื่นในการเปลี่ยนสีไม่ได้ผล) ฉันหวังว่านี่จะช่วยคนได้มากขึ้น ขอบคุณ!
Pedro Loureiro

3
@Peter Knut คุณต้องระบุว่าสิ่งนี้ใช้ได้กับ API21 ขึ้นไปเท่านั้นซึ่งสิ่งที่ทำให้มันไร้ประโยชน์
DoruChidean

@DoruChidean ทดสอบกับ Jelly Bean (API 16): มันใช้งานได้เหมือนมีเสน่ห์!
crubio

ไม่สามารถกำหนดธีมในกิจกรรมได้ IE, <activity android: name = ". SomeActivity" android: theme = "@ style / AppTheme.Toolbar"
lostintranslation

11

หากคุณรองรับ API 23 ขึ้นไปตอนนี้คุณสามารถใช้แอตทริบิวต์ titleTextColorเพื่อกำหนดสีหัวเรื่องของ Toolbar ได้

รูปแบบ / toolbar.xml

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:titleTextColor="@color/colorPrimary"
        />

MyActivity.java

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar)
toolbar.setTitleTextColor(Color.WHITE);

สิ่งเหล่านี้ดูเหมือนจะได้รับการสนับสนุนจากไลบรารี appcompat เช่นกัน
Eugen Pechanec

10

การตั้งค่าผลงานapp:titleTextColorของฉันandroid.support.v7.widget.Toolbarสำหรับฉันใน Android 4.4 และ 6.0 ด้วยcom.android.support:appcompat-v7:23.1.0:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:titleTextColor="@android:color/white" />

4
สังเกตว่าเนมสเปซเป็นแอปไม่ใช่ Android
Tommie

เพียงแค่เพิ่มแอปพลิเคชันบรรทัดนี้: titleTextColor = "@ android: color / white" ก็ใช้ได้กับฉันใน kitkat ขึ้นไปเช่นกัน ขอบคุณ @hunyadym
Ghanshyam Nayma

9

สิ่งนี้ทำให้ฉันรำคาญอยู่พักหนึ่งและฉันไม่ชอบคำตอบใด ๆ ที่ได้รับดังนั้นฉันจึงดูแหล่งที่มาเพื่อดูว่ามันทำงานอย่างไร

FractalWrench อยู่ในเส้นทางที่ถูกต้อง แต่สามารถใช้งานได้ต่ำกว่า API 23 และไม่จำเป็นต้องตั้งค่าบนแถบเครื่องมือด้วยตนเอง

อย่างที่คนอื่นบอกคุณสามารถตั้งค่าสไตล์บนแถบเครื่องมือด้วย

app:theme="@style/ActionBar"

และในรูปแบบนั้นคุณสามารถกำหนดสีข้อความชื่อเรื่องด้วย

<item name="titleTextColor">#00f</item>

สำหรับ Pre API 23 หรือสำหรับ 23+

<item name="android:titleTextColor">your colour</item>

xml แบบเต็ม

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    app:theme="@style/ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/>


<style name="ActionBar" parent="@style/ThemeOverlay.AppCompat.ActionBar">
    <item name="android:titleTextStyle">@style/ActionBarTextStyle</item>
    <item name="titleTextColor">your colour</item>
    <item name="android:background">#ff9900</item>
</style>

นี่คือคุณลักษณะทั้งหมดที่สามารถตั้งค่าสำหรับแถบเครื่องมือ

<declare-styleable name="Toolbar">
    <attr name="titleTextAppearance" format="reference" />
    <attr name="subtitleTextAppearance" format="reference" />
    <attr name="title" />
    <attr name="subtitle" />
    <attr name="gravity" />
    <attr name="titleMargins" format="dimension" />
    <attr name="titleMarginStart" format="dimension" />
    <attr name="titleMarginEnd" format="dimension" />
    <attr name="titleMarginTop" format="dimension" />
    <attr name="titleMarginBottom" format="dimension" />
    <attr name="contentInsetStart" />
    <attr name="contentInsetEnd" />
    <attr name="contentInsetLeft" />
    <attr name="contentInsetRight" />
    <attr name="maxButtonHeight" format="dimension" />
    <attr name="navigationButtonStyle" format="reference" />
    <attr name="buttonGravity">
        <!-- Push object to the top of its container, not changing its size. -->
        <flag name="top" value="0x30" />
        <!-- Push object to the bottom of its container, not changing its size. -->
        <flag name="bottom" value="0x50" />
    </attr>
    <!-- Icon drawable to use for the collapse button. -->
    <attr name="collapseIcon" format="reference" />
    <!-- Text to set as the content description for the collapse button. -->
    <attr name="collapseContentDescription" format="string" />
    <!-- Reference to a theme that should be used to inflate popups
         shown by widgets in the toolbar. -->
    <attr name="popupTheme" format="reference" />
    <!-- Icon drawable to use for the navigation button located at
         the start of the toolbar. -->
    <attr name="navigationIcon" format="reference" />
    <!-- Text to set as the content description for the navigation button
         located at the start of the toolbar. -->
    <attr name="navigationContentDescription" format="string" />
    <!-- Drawable to set as the logo that appears at the starting side of
         the Toolbar, just after the navigation button. -->
    <attr name="logo" />
    <!-- A content description string to describe the appearance of the
         associated logo image. -->
    <attr name="logoDescription" format="string" />
    <!-- A color to apply to the title string. -->
    <attr name="titleTextColor" format="color" />
    <!-- A color to apply to the subtitle string. -->
    <attr name="subtitleTextColor" format="color" />
</declare-styleable>

4

วิธีที่ง่ายที่สุดในการเปลี่ยนToolbarสีของชื่อเรื่องด้วยในCollapsingToolbarLayoutสีของชื่อด้วย

เพิ่มรูปแบบด้านล่างเพื่อ CollapsingToolbarLayout

<android.support.design.widget.CollapsingToolbarLayout
        app:collapsedTitleTextAppearance="@style/CollapsedAppBar"
        app:expandedTitleTextAppearance="@style/ExpandedAppBar">

styles.xml

<style name="ExpandedAppBar" parent="@android:style/TextAppearance">
        <item name="android:textSize">24sp</item>
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>

    <style name="CollapsedAppBar" parent="@android:style/TextAppearance">
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>

3

หากคุณสามารถใช้ appcompat-v7 app: titleTextColor = "# fff">

<android.support.v7.widget.Toolbar  
        android:id="@+id/toolbar"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:background="@color/colorPrimary"   
        android:visibility="gone"   
        app:titleTextColor="#fff">   
    </android.support.v7.widget.Toolbar>   

2

สิ่งนี้ได้ผลสำหรับฉัน

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:navigationIcon="@drawable/ic_back"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:subtitleTextColor="@color/white"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:title="This week stats"
    app:titleTextColor="@color/white">


    <ImageView
        android:id="@+id/submitEditNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:src="@android:drawable/ic_menu_manage" />
</android.support.v7.widget.Toolbar>

2

สร้างแถบเครื่องมือใน xml ... toolbar.xml ของคุณ:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"

    </android.support.v7.widget.Toolbar>

จากนั้นเพิ่มสิ่งต่อไปนี้ใน toolbar.xml ของคุณ:

app:titleTextColor="@color/colorText"
app:title="@string/app_name">

Remeber @ color / colorText เป็นเพียงไฟล์ color.xml ของคุณที่มีแอตทริบิวต์ color ชื่อ colorText และสีของคุณนี่เป็นวิธีที่ดีที่สุดในการเรียกสตริงของคุณแทนที่จะเข้ารหัสสีของคุณไว้ใน toolbar.xml คุณยังมีตัวเลือกอื่น ๆ ในการแก้ไขข้อความของคุณเช่น textAppearance ... etc ... เพียงแค่พิมพ์ app: text ... และ intelisense จะให้ตัวเลือกใน android studio

แถบเครื่องมือสุดท้ายของคุณควรมีลักษณะดังนี้:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_weight="1"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/Theme.AppCompat"
       app:subtitleTextAppearance="@drawable/icon"
        app:title="@string/app_name">
    </android.support.v7.widget.Toolbar>

หมายเหตุ: แถบเครื่องมือนี้ควรอยู่ใน activity_main.xml ของคุณ Easy Peasie

อีกทางเลือกหนึ่งคือทำทุกอย่างในชั้นเรียนของคุณ:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.WHITE);

โชคดี


สวัสดีขอบคุณที่ใช้งานได้ แต่คุณรู้วิธีใช้แอตทริบิวต์นั้นเฉพาะในสไตล์หรือไม่? แทนที่จะทำให้ xml ยุ่งขึ้น ขอบคุณ :)
Greggz

เห็นได้ชัดว่า @color ของคุณมาจากทรัพยากรสตริงของคุณโดยตรงด้วยวิธีนี้ xml ของคุณจะเรียบง่ายกว่าการเข้ารหัสสีของคุณ
RileyManda

1

สำหรับเปลี่ยนสี

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:background="?attr/colorPrimary"

/>

Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
        myToolbar.setTitleTextColor(ContextCompat.getColor(getApplicationContext(), R.color.Auth_Background));
        setSupportActionBar(myToolbar);

1

ฉันต่อสู้กับเรื่องนี้มาสองสามชั่วโมงแล้วในวันนี้เพราะคำตอบทั้งหมดนี้ล้าสมัยไปแล้วกับ MDC และความสามารถในชุดรูปแบบใหม่ที่ฉันไม่สามารถมองเห็นวิธีการแทนที่ app:titleTextColorแอปแบบกว้าง ๆ เป็นสไตล์ได้

คำตอบก็คือtitleTextColorมีอยู่ใน styles.xml Widget.AppCompat.Toolbarคุณจะเอาชนะสิ่งที่สืบทอดจาก วันนี้ฉันคิดว่าทางเลือกที่ดีที่สุดควรจะเป็นWidget.MaterialComponents.Toolbar:

<style name="Widget.LL.Toolbar" parent="@style/Widget.MaterialComponents.Toolbar">
     <item name="titleTextAppearance">@style/TextAppearance.LL.Toolbar</item>
     <item name="titleTextColor">@color/white</item>
     <item name="android:background">?attr/colorSecondary</item>
</style>

<style name="TextAppearance.LL.Toolbar" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
     <item name="android:textStyle">bold</item>
</style>

และในธีมแอปของคุณให้ระบุ toolbarStyle:

<item name="toolbarStyle">@style/Widget.LL.Toolbar</item>

ตอนนี้คุณสามารถปล่อย xml ที่คุณระบุแถบเครื่องมือไว้ไม่เปลี่ยนแปลง เป็นเวลานานฉันคิดว่าการเปลี่ยนandroid:textColorลักษณะข้อความในแถบเครื่องมือควรใช้งานได้ แต่ด้วยเหตุผลบางประการก็ไม่ได้


0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleTextColor="@color/white"
    android:background="@color/green" />


0
public class MyToolbar extends android.support.v7.widget.Toolbar {

public MyToolbar(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    AppCompatTextView textView = (AppCompatTextView) getChildAt(0);
    if (textView!=null) textView.setTextAppearance(getContext(), R.style.TitleStyle);
}

}

หรือใช้งานง่ายๆจาก MainActivity:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarMain);
setSupportActionBar(toolbar);
((AppCompatTextView) toolbar.getChildAt(0)).setTextAppearance(this, R.style.TitleStyle);

style.xml

<style name="TileStyle" parent="TextAppearance.AppCompat">
    <item name="android:textColor">@color/White</item>
    <item name="android:shadowColor">@color/Black</item>
    <item name="android:shadowDx">-1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
</style>

แม้ว่ารหัสนี้อาจตอบคำถามได้ แต่จะเป็นการดีกว่าที่จะรวมบริบทบางส่วนอธิบายวิธีการทำงานและเวลาที่ควรใช้ คำตอบแบบใช้รหัสเท่านั้นไม่มีประโยชน์ในระยะยาว
Aditi Rawat

0

ทำด้วย toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// นี่คือสไตล์ที่คุณสามารถปรับแต่งชุดสีของคุณเองได้

 <style name="TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:fontFamily">@string/you_font_family</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textAppearance">@style/you_text_style</item>
    <item name="android:textColor">#000000</item>
    <item name="android:textSize">20sp</item>
</style>

0

ง่ายมากสิ่งนี้ใช้ได้กับฉัน (ชื่อและไอคอนสีขาว):

    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/PrimaryColor"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:elevation="4dp" />

0

ด้วยไลบรารีส่วนประกอบวัสดุคุณสามารถใช้app:titleTextColorแอตทริบิวต์

ในเค้าโครงคุณสามารถใช้สิ่งต่างๆเช่น:

<com.google.android.material.appbar.MaterialToolbar
    app:titleTextColor="@color/...."
    .../>

คุณยังสามารถใช้สไตล์ที่กำหนดเอง:

<com.google.android.material.appbar.MaterialToolbar
     style="@style/MyToolbarStyle"
    .../>

ด้วย (ขยายWidget.MaterialComponents.Toolbar.Primaryสไตล์):

  <style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar.Primary">
       <item name="titleTextColor">@color/....</item>
  </style>

หรือ (ขยายWidget.MaterialComponents.Toolbarสไตล์):

  <style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar">
       <item name="titleTextColor">@color/....</item>
  </style>

ใส่คำอธิบายภาพที่นี่

คุณยังสามารถแทนที่สีที่กำหนดโดยสไตล์โดยใช้android:themeแอตทริบิวต์ (โดยใช้Widget.MaterialComponents.Toolbar.Primaryสไตล์):

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar.Primary"
        android:theme="@style/MyThemeOverlay_Toolbar"
        />

ด้วย:

  <style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- This attributes is also used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/...</item>
  </style>

ใส่คำอธิบายภาพที่นี่

หรือ (ใช้Widget.MaterialComponents.Toolbarสไตล์):

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar"
        android:theme="@style/MyThemeOverlay_Toolbar2"

ด้วย:

  <style name="MyThemeOverlay_Toolbar3" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- This attributes is used by title -->
    <item name="android:textColorPrimary">@color/white</item>

    <!-- This attributes is used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/secondaryColor</item>
  </style>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.