एक्शनबार के नीचे छाया निकालें


208

मैं एक्शनबारलॉक का उपयोग करता हूं। नीचे दिए गए कोड का टुकड़ा एक कस्टम एक की पृष्ठभूमि को बदलने के लिए जिम्मेदार है।

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="background">@drawable/actionbar_bg</item>
    <item name="android:background">@drawable/actionbar_bg</item>
    <...>  
</style>

<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <..>
</style>

और यह एक्शनबर्स्लॉक (हनीकॉम्ब के नीचे के संस्करणों पर) के लिए काम करता है। लेकिन ICS में मेरे पास एक्शनबार के नीचे एक छाया है जो मुझे नहीं चाहिए। इसे गायब करने के लिए स्टाइल आइटम क्या है?

जवाबों:


481

इसे गायब करने के लिए स्टाइल आइटम क्या है?

छाया को हटाने के लिए इसे अपने ऐप थीम में जोड़ें:

<style name="MyAppTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowContentOverlay">@null</item>
</style>

अद्यतन: जैसा कि @ Quinny898 ने कहा, एंड्रॉइड 5.0 पर यह बदल गया है, आपको setElevation(0)अपने एक्शन बार पर कॉल करना होगा। ध्यान दें कि यदि आप समर्थन लाइब्रेरी का उपयोग कर रहे हैं, तो आपको इसे उसी तरह से कॉल करना होगा:

getSupportActionBar().setElevation(0);

क्या यह स्थिति पट्टी के नीचे से छाया को हटाने की शैली नहीं है, एक्शनबार की नहीं?
मिशैल के

96
धन्यवाद, यह गायब हो गया। ध्यान देने वाली महत्वपूर्ण बात यह है कि कोड की यह पंक्ति ऐप थीम में दिखाई देनी चाहिए, एक्शनबार शैली में नहीं।
मीकल कश्मीर

3
मैं कार्यरत हूं! यह स्पष्ट होने की आवश्यकता है कि कोड की इस पंक्ति को ऐप थीम टैग में जोड़ा जाना चाहिए, न कि ActionBar थीम टैग में।
tuoxie007

और एक और बात जिस पर भी ध्यान दिया जाना चाहिए कि आपको अपने विषय को मूल्यों में बदलना चाहिए,
v

6
पूर्व लॉलीपॉप उपकरणों के लिए getSupportActionBar().setElevation(0);काम नहीं करता है। तो आप <item name="android:windowContentOverlay">@null</item>अपने आवेदन विषय में डाल दिया है। मुझे भी ऐसी ही समस्या थी। अब मैं दोनों का हूँ। setElevation और अनुप्रयोग थीम में जोड़ा गया WindowContentOverlay आइटम। setElevation एंड्रॉइड 5.0 और ऊपर के लिए काम करता है जबकि अन्य प्री-लॉलीपॉप के लिए काम करता है। चीयर्स!
रेयाज़ मुरशेड

140

एंड्रॉइड 5.0 के लिए, यदि आप इसे सीधे एक स्टाइल उपयोग में सेट करना चाहते हैं:

<item name="android:elevation">0dp</item>

और समर्थन पुस्तकालय संगतता उपयोग के लिए:

<item name="elevation">0dp</item>

AppCompat प्रकाश विषय के लिए शैली का उदाहरण:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

तो आप अनुप्रयोग विषय के लिए इस कस्टम ActionBar शैली लागू होते हैं:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

पूर्व 5.0 एंड्रॉइड के लिए, इसे भी अपने ऐप थीम में जोड़ें:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

1
पूर्व 5.0 उपकरणों के लिए मेरे लिए काम नहीं किया। समस्या यह थी, मैंने windowContentOverlayएक्शन बार थीम में जोड़ा , न कि ऐप थीम के लिए।
ओलिव

मुझे खेद है, लेकिन मैं इसके विपरीत काम करने की कोशिश कर रहा हूं, ऊंचा छाया वास्तव में प्री-लॉलीपॉप डिवाइसों पर दिखाई देता है (मैं लॉलीपॉप उपकरणों के साथ ऐसा करने में कामयाब रहा android:elevation)। मैं इस दृष्टिकोण का उपयोग करते हुए इसे करने का प्रबंधन नहीं कर सकता। मेरा मानना ​​है कि यह काफी सीधा होगा। ऊंचाई विशेषताओं के लिए एक गैर-शून्य मान रखो और यह होगा।
अक्रिसो

यह डिफ़ॉल्ट रूप से दिखाई देना चाहिए यदि आप एंड्रॉइड को नहीं छूते हैं: windowContentOverlay विशेषता, हो सकता है कि आप एक सही विषय का उपयोग कर रहे हों ... मुझे लगता है कि आपको AppCompat विषय का उपयोग करने की आवश्यकता है।
स्लोऑक्ट

लेकिन android:windowContentOverlayप्री लॉलीपॉप एपीआई पर कैसे निपटा जाए ? अगर मेरा minSDK प्री लॉलीपॉप है तो मैं कंपाइल नहीं कर सकता लेकिन लक्ष्य 21 है?
Opiatefuchs

2
यह काम किया है, लेकिन केवल जब मैं विशेषता में <style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">बिना उपयोग किया । style/parent
इगोर

103

एंड्रॉइड 5.0 पर यह बदल गया है, आपको अपने एक्शन बार पर setElevation (0) को कॉल करना होगा। ध्यान दें कि यदि आप समर्थन लाइब्रेरी का उपयोग कर रहे हैं, तो आपको इसे उसी तरह से कॉल करना होगा:

getSupportActionBar().setElevation(0);

यह WindowContentOverlay स्टाइल आइटम से अप्रभावित है, इसलिए शैलियों में किसी भी बदलाव की आवश्यकता नहीं है


1
क्या आपको हर गतिविधि के लिए ऐसा करना पड़ता है, या क्या इसके लिए सभी गतिविधियों पर लागू करने की एक त्वरित विधि है? मैं अपनी सभी गतिविधियों को अभी के लिए जोड़ दूंगा। धन्यवाद!
cnfw

जैसा कि यह किसी भी अन्य एक्शनबार विधि (उदाहरण के लिए शीर्षक) की तरह है, मैं हर गतिविधि को कहूंगा
कीरोन

कि एक शर्म की बात है। इस तरह से पैरामीटर सेट करना अच्छा होगा। हो सकता है कि भविष्य के अपडेट में आएगा
cnfw

यह 5.0 से कम संस्करणों पर काम नहीं कर रहा है। क्या सपोर्ट एक्शनबार सभी पिछले उपकरणों के साथ संगत नहीं है?
splinter123

यहाँ @ @ splinter123 के रूप में समान :( आश्चर्य है कि मैं
AppCompat

55

जोड़ने app:elevation="0dp"AppBar में छाया को छिपाने के लिए AppBarLayout में


1
सभी को देखें, बस इस समाधान को लागू करें और बाकी सभी ने जो कहा है उसे भूल जाएं। धन्यवाद दोस्त! यह काम करता हैं! बहुत ही सरल उपाय!
एस ब्रूस

1
इस तरह का उपयोग करें: <android.support.design.widget.AppBarLayout Android: Layout_width = "match_parent" android: layout_height = "wra_content" ऐप: उन्नयन = "0dp": थीम = "@ style / AppTheme.AppBarOverlay">
Bharat कुल रतन

@MarcoFerrari AppBarLayout के मामले में इसे 'getSupportActionBar () के रूप में उपयोग करें। सेट-एलेवेशन (0);' काम नहीं करता है।
सलिल धवन

39

यदि आप ActionBarSherlock के साथ काम कर रहे हैं

अपने विषय में इसे जोड़ें:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    ....
</style>

यह एक बेहतर जवाब है, यह संगतता आइटम को निर्दिष्ट करता है
1owk3y

25

आप सेट करना आवश्यक है app:elevation="0dp"में android.support.design.widget.AppBarLayoutऔर उसके बाद यह काम करता है।

<android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

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


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

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

1
यह कारण है, कि AppBar की छाया हर जगह दूर है - मैं उस प्रोग्राम को कैसे नियंत्रित कर सकता हूं?
सुइस

14
app:elevation="0dp" 

लेकिन नहीं

android:elevation="0dp"

मेरे लिए Android L पर काम किया


2

मुझे यही समस्या है, और मैंने इस समस्या को सफलतापूर्वक हल कर लिया है। आपको बस उस गतिविधि में 0 फ्लोटिंग पॉइंट वैल्यू में ऊँचाई को बदलना है जिसमें आप ऊँचाई को हटाना चाहते हैं।

यदि आप इसे एक गतिविधि में बदलना चाहते हैं, MyActivity.javaतो आपको ActionBarपहले प्राप्त करना होगा ।

पहले ActionBarकक्षा आयात करें

import android.support.v7.app.ActionBar;

आयात करने के बाद आपको एक्शन बार के एक वैरिएबल को इनिशियलाइज़ करना होगा और इसकी ऊंचाई को 0 पर सेट करना होगा।

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }

1

ज़ामरीन डेवलपर्स के लिए, कृपया उपयोग करें: गैर-कंपोनेंट गतिविधियों के SupportActionBar.Elevation = 0;लिए AppCompatActivityयाActionBar.Elevation = 0;


1

के लिए समाधान Kotlin (एंड्रॉयड 3.3, Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}

निश्चित नहीं है कि यह क्यों अस्वीकृत है (मैं कोटलिन में नया हूं) लेकिन यह मेरे लिए काम करता है जहां दूसरों ने नहीं किया
एलन

1

यह कोशिश करें कि इसने मुझे बिना विषय बदलने में मदद की। किसी भी लेआउट के अंदर अपने AppBarLayout रखो। यह आपकी मदद करेगा

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="false"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:layout_height="?attr/actionBarSize"
       android:background="@color/white">
        <ImageView
            android:src="@drawable/go_grocery_logo"
            android:layout_width="108dp"
            android:layout_height="32dp" />
    </android.support.v7.widget.Toolbar>


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

0

टुकड़ों पर काम करने वालों के लिए और यह सेटिंग toolbar.getBackground().setAlpha(0);या किसी भी गायब होने के बाद गायब हो गया, मुझे लगता है कि आपको अपने AppBarLayout को xml में अंतिम रूप से लाना है, इसलिए इसका Fragment तब AppBarLayout, उसके बाद रिश्तेदार / नक्षत्र / रैखिक व्हिस् यू का उपयोग करें।


0

इसे toolbar.getBackground().setAlpha(0);OnCreate मेथड के अंदर जोड़ें । इसे जोड़ें: android:elevation="0dp" android:background="@android:color/transparent अपने टूलबार xml फ़ाइल में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.