मैंने इस विषय/शैली का उपयोग करके एक्शनबार पृष्ठभूमि में एक छवि जोड़ने की कोशिश की है

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">@drawable/actionbar_background</item>
</style>

लेकिन यद्यपि पृष्ठभूमि को बदला जा रहा है, यह शीर्षक और मेनू बटन पर एक अजीब प्रभाव पैदा कर रहा है। ऐसा लगता है कि वे एक्शनबार के भीतर अलग-अलग बाल विचार हैं (शायद वे हैं, मुझे यकीन नहीं है) और ड्रायबल व्यक्तिगत रूप से उन पर लागू किया जा रहा है।

मैं एक्शनबार में एक निर्बाध ड्रायबल लागू होने की उम्मीद कर रहा था। क्या यह संभव है या मुझे बस छोड़ देना चाहिए, और इसके बजाय केवल एक सपाट रंग के साथ पृष्ठभूमि को बदलना चाहिए?

Problems in the black circles

गतिविधि_मेन.एक्सएमएल

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout_activity_main"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>

शैलियाँ.एक्सएमएल

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="coordinatorLayoutStyle">@style/Widget.Support.CoordinatorLayout</item>
        <item name="colorAccent">@android:color/black</item>
        <item name="colorPrimary">@android:color/holo_blue_dark</item>
        <item name="colorPrimaryDark">@android:color/holo_blue_dark</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textColorSecondary">@android:color/white</item>
        <item name="android:textColorHint">@android:color/white</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="android:windowBackground">@drawable/no_actionbar_background</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:background">@drawable/actionbar_background</item>
    </style>

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:background">@android:color/black</item>
    </style>
</resources>
0
nobody special 24 सितंबर 2018, 01:15

3 जवाब

सबसे बढ़िया उत्तर

जब आप किसी दृश्य की android:theme विशेषता सेट करते हैं, तो आपके द्वारा पास की जाने वाली शैली उस दृश्य और उसके सभी बच्चों पर लागू होती है। आपके मामले में, AppBarLayout (आंतरिक रूप से) शीर्षक और अतिप्रवाह मेनू बटन के लिए अलग-अलग दृश्यों का उपयोग करता है।

हालांकि, चूंकि आपकी शैली केवल एक चीज कर रही है जो android:background विशेषता सेट कर रही है, आप इसे सीधे AppBarLayout पर सेट कर सकते हैं। तो, इसे बदलें:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

इसके साथ ही:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/actionbar_background">
0
Ben P. 24 सितंबर 2018, 04:43
"android:background" 

अपनी शैली में अपने लेआउट में प्रत्येक घटक के लिए पृष्ठभूमि बदलें। आप अपने एक्शनबार का रंग कुछ इस तरह से बदल सकते हैं।

<item name="android:navigationBarColor">@color/colorPrimary</item>
0
Paolo Colombo 24 सितंबर 2018, 02:07

यह AppCompat-v7 टूलबार के लिए एक उदाहरण है, अन्य टूलबार थीम के मामले में थोड़ा अलग है।

मैं वास्तव में आपको वह उत्तर नहीं दे सकता जो आपको सबसे अधिक उपयुक्त लगे, और यह कोड केवल आपको रास्ता दिखाने के लिए है।

क्या परिवर्तन है कि टूलबार android:theme के बजाय style का उपयोग कर रहा है और यह एक नई शैली AppTheme.Toolbar का उपयोग करता है।

AppTheme.Toolbar आपकी कस्टम पृष्ठभूमि, टूलबार के अंदर दृश्यों के लिए थीम (शीर्षक, उपशीर्षक, आदि) और पॉपअप मेनू के लिए थीम को समूहीकृत करता है।

बच्चों के लिए थीम और पॉपअप मेनू अलग-अलग हैं ताकि आप प्रत्येक घटक को अलग से नियंत्रित कर सकें।

उनकी parent विशेषता (डार्क से लाइट तक) के साथ खेलने की कोशिश करें और चुनें कि आपके लिए सबसे अच्छा क्या है।

अपनी शैलियों में।xml

<style name="AppTheme.Toolbar">
    <item name="android:background">@drawable/actionbar_background</item>
    <item name="popupTheme">@style/AppTheme.PopupOverlay</item>
    <item name="android:theme">@style/AppTheme.AppBarOverlay</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- Change attribute of the toolbar views-->
</style>

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark">
    <!--Change attribute of the menu-->
</style>

आपकी गतिविधि में_main.xml

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        style="@style/AppTheme.Toolbar"
        android:layout_height="?attr/actionBarSize" />

</android.support.design.widget.AppBarLayout>
0
xiaomi 24 सितंबर 2018, 07:19