AppCompat-v7 21 के साथ एक्शनबार / टूलबार में आइकन दिखाएं


130

मैंने इन्हें आज़माया - लेकिन फिर भी पहले जैसा आइकन नहीं देखा:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

यह काम करने लगता है जब मैं कस्टम टूलबार का उपयोग करता हूं - लेकिन यह मुझे सभी लेआउट को छूने के लिए मजबूर करेगा - क्या ऐसा करने का एक बेहतर तरीका है?


1
आप अपनी गतिविधि कक्षा जोड़ सकते हैं, जहाँ आपने एक्शन बार सामान जोड़ा है?
हर्षवर्धन

जवाबों:


256
getSupportActionBar().setDisplayShowHomeEnabled(true);

साथ में

getSupportActionBar().setIcon(R.drawable.ic_launcher);

7
खबरदार है कि getSupportActionBar()हो सकता है nullआपके गतिविधि की शैली पर निर्भर करता है।
जलोहोरा

2
अभी भी इसका आइकन नहीं दिखा रहा है। मैंने getSupportActionBar () का उपयोग किया। setDisplayHomeAsUpEnabled (सच); । getSupportActionBar () setIcon (R.drawable.ic_app_icon); । getSupportActionBar () setTitle ( "लेबल");
मीनाक्षी

8
टाइटल बार के मध्य में आइकॉन क्यों दिखाई देता है? मैं चाहता हूं कि आइकन टाइटल बार के बाईं ओर हो। कृपया मदद करें .. धन्यवाद
मोहम्मद राजोब

1
@ मीनाक्षी आपको सेटडिसप्ले शोशोमेन्नेबिल (सत्य) का उपयोग करना चाहिए; कि मेरे लिए एक चाल
चली

1
ध्यान दें कि आइकन सेट करना क्लिक करने योग्य नहीं है। यदि आप एक क्लिक करने योग्य आइकन की तलाश कर रहे हैं, तो आपको .setHomeAsUpIndicatorइसे अपने में उपयोग करने और संभालने की आवश्यकता है onOptionsItemSelected
जोशुआ पिंटर

32

आधुनिक एंड्रॉइड यूआई में डेवलपर्स को अपने एप्लिकेशन आइकन की तुलना में टूलबार के लिए एक अलग रंग योजना पर अधिक दुबला होना चाहिए। एक मानक लेआउट के रूप में एप्लिकेशन आइकन प्लस शीर्षक का उपयोग एपीआई 21 उपकरणों और नए पर हतोत्साहित किया जाता है।

यदि आप असहमत हैं, तो आप इसके साथ प्रयास कर सकते हैं:

XML में टूलबार बनाने के लिए:

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

आपकी गतिविधि में:

@Override
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

आइकन सेट करने के लिए setLogo () विधि का उपयोग करें । कोड स्रोत।


1
मैं केवल यह बताना चाहता हूं कि वर्तमान में प्ले स्टोर Settingsगतिविधि में एक्शन बार में ऐप आइकन है। सामग्री अद्यतन के बाद भी यह मौजूद है।
ऑस्टिन महोनी

17

यह मेरे लिए काम किया:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

साथ ही साथ:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

कई अनावश्यक तरीके हैं और आइकन से संबंधित नहीं हैं
user924

15

सबसे आसान काम; बस जोड़ दो:

app:navigationIcon="@drawable/ic_action_navigation_menu">

<android.support.v7.widget.Toolbarटैग के लिए

@drawable/ic_action_navigation_menuआइकन का नाम कहां है


1
अच्छी तरह से काम! यह टूलबार में नेविगेशन आइकन जोड़ने का सही और सरल तरीका है। यदि आप नेविगेशन आइकन क्लिक के लिए जाँच करना चाहते हैं, तो आप android.R.id.homeअपने में आईडी के लिए जाँच कर सकते हैं onOptionsItemSelected(...)
साजिद

12

कई विकल्प सेट करने का बेहतर तरीका:

setIcon/setLogoविधि केवल तभी काम करेगी जब आपने DisplayOptions सेट किया है यह कोशिश करें -

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

आप लोगो को प्रदर्शित करने के लिए विकल्प भी निर्धारित कर सकते हैं (बस निरंतर जोड़ें ActionBar.DISPLAY_USE_LOGO)। अधिक जानकारी - प्रदर्शन


6

प्रयोग करके देखें:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);

5
होनहार लग रहा था - लेकिन अभी भी कोई चिह्न :-(
ligi

5

यदि आप घर या बैक आइकन (लोगो या स्थिर आइकन नहीं) सेट करना चाहते हैं तो आप उपयोग कर सकते हैं

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );

यह सही उत्तर है, क्योंकि उपस्थिति और व्यवहार
cutiko

केवल इसने मुझे एक सामान्य रूप दिया (आकार, मार्जिन, शीर्षक और आइकन के बीच ऑफसेट), वेक्टर लॉन्चर के साथ भी ठीक काम करता है ( .xml), जैसे R.mipmap.ic_launcherयाR.mipmap.ic_launcher_round
user924

और मैंने इसे लोगो / स्टैटिक आइकन के रूप में इस्तेमाल किया क्योंकि अन्य समाधान बदसूरत काम करते हैं
user924

5

एक्शनबार के लिए:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

टूलबार के लिए:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

5
ActionBar और Toolbar के 2 कोड में कोई अंतर नहीं है, क्या यह जानबूझकर है?
राजा राजा

1
ActionBar के लिए होना चाहिए: getActionBar ()। SetDisplayHomeAsUpEnabled (सच); । getActionBar () setHomeAsUpIndicator (R.drawable.ic_action_back);
दर्शन

यह वास्तव में जाने का रास्ता है। बस setIconएक क्लिक करने योग्य बटन का उपयोग करने की अनुमति नहीं देता है, जहां उपचार के रूप setHomeAsUpIndicatorमें onOptionsItemSelectedकाम करता है। धन्यवाद!
यहोशू पिंटर

4
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

या XML लेआउट कॉल करेंtool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 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:background="@color/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="4dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:src="@drawable/ic_action_search"/>

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

अब आप में मुख्य गतिविधि इस लाइन को जोड़ते हैं

 <include
     android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />

3

आप उपयोग कर कार्रवाई बार के रूप में अपने उपकरण पट्टी स्थापित करने के लिए चाहते हैं, तो setSupportActionBar , तो आप इस तरह (आप अगर उदाहरण के लिए एक वापस बटन है) अपने नेविगेशन आइकन के बगल में एक लोगो जोड़ सकते हैं:

toolbar.setLogo();

या xml में

<android.support.v7.widget.Toolbar 
    ....
    android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

और यहां तक ​​कि अगर आपके पास टूलबार पर एक शीर्षक सेट है, तो भी शीर्षक दिखाई देगा।

Ex: नीचे की छवि में हरे रंग का चेक लोगो है

नेविगेशन आइकन, लोगो और शीर्षक के साथ टूलबार


2

इसे इस्तेमाल करे:

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

स्थिर आइकन के लिए


1
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}

0

Xamarin.Android में आप इन का उपयोग कर सकते हैं:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

Android.Support.V7.App.App.AppCompatActivity का उपयोग करना आवश्यक है।


0

इसे इस्तेमाल करे। मेरे लिए यह काम कर गया

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);

0

कोटलिन में मैंने केवल आइकन दिखाने के लिए निम्न कार्य किया:

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