मैं एंड्रॉइड एक्शनबार शीर्षक और आइकन कैसे बदल सकता हूं


225

मैं Android में ActionBar पर कुछ चीजें करने की कोशिश कर रहा हूं।

मैंने पहले ही नए आइटम को एक्शन बार के दाईं ओर जोड़ा है।

मैं एक्शन बार के बाईं ओर कैसे बदल सकता हूं? मैं आइकन और पाठ को बदलना चाहता हूं, और मैं अन्य स्क्रीन के लिए एक्शन बार में "बैक बटन" जोड़ना चाहता हूं

एंड्रॉइड एक्शन बार

जवाबों:


514

यह पूरा करने के लिए बहुत सरल है

यदि आप इसे कोड में बदलना चाहते हैं, तो कॉल करें:

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

और जो भी आप चाहते हैं उसके लिए मान सेट करें।

या, Android प्रकट XML फ़ाइल में:

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

अपने एप्लिकेशन उपयोग में बैक बटन को सक्षम करने के लिए:

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

कोड को सभी में रखा जाना चाहिए onCreateताकि लेबल / आइकन बदलना उपयोगकर्ता के लिए पारदर्शी हो, लेकिन वास्तव में इसे गतिविधि के जीवनचक्र के दौरान कहीं भी बुलाया जा सकता है।


23
यदि आप एक्शनबार को जोड़ने के लिए समर्थन लाइब्रेरी का उपयोग कर रहे हैं, तो getSupportActionBarइसके बजाय का उपयोग करें getActionBar
रिक पास्टर

3
getActionBar().setHomeButtonEnabled(true)एपीआई स्तर 14 या ऊपर का उपयोग करता है, यदि आप पुराने बैक बटन की कार्यक्षमता के साथ-साथ नए एपीआई भी चाहते हैं तो आपको बस जरूरत हैgetActionBar().setDisplayHomeAsUpEnabled(true)
अक्षत अग्रवाल

3
getSupportActionBar ()। setDisplayShowTitleEnabled (सच); सेटलाइट से पहले ("123");
जोस मैनुअल अबर्का रॉड्रिग्ज

यदि आप कोड getActionBar () का उपयोग करते हैं। setIcon (R.drawable.my_icon); क्या आप इसे क्लिक करने योग्य बना सकते हैं?
स्कीटी

1
@ JoseManuelAbarcaRodríguez धन्यवाद, यही मेरे लिए गायब था। कोटलिन में: supportActionBar?.setDisplayShowTitleEnabled(true)तब supportActionBar?.title = "your title"। और यह गतिविधि के साथ बनाते समय onResume, अंदर नहीं, बल्कि onCreateकरना होगा startActivity
एरिक आया

18

अपने सभी ऐक्शन बारों द्वारा एकल आइकन को प्रयोग करने योग्य बनाने के लिए आप अपने एंड्रॉइड मेनिफेस्ट में ऐसा कर सकते हैं।

<application
    android:logo="@drawable/Image">

    ...

</application>

1
धन्यवाद- मैं ऐप के बाहर एक अलग आइकन चाहता था (जैसा कि "सभी ऐप्स" में देखा गया था) और एक्शन बार के बाईं ओर एक और आइकन। और यह काम किया। मैनिफेस्ट फ़ाइल में अभी भी android है: icon = "@ drawable / ic_launcher"
flobacca

2
यह सही तरीका है क्योंकि यह pre-loadsआइकन है, प्रोग्रामेटिक रूप से आइकन आइकन धीमा है!
मुहम्मद बाबर

11

आपको कोड की इन 3 लाइनों को जोड़ना होगा। आइकन को अपने खुद के आइकन से बदलें। यदि आप आइकन उत्पन्न करना चाहते हैं तो इसका उपयोग करें

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

एंड्रॉइड 5.0 सामग्री डिजाइन दिशा-निर्देशों में एक्शनबार में आइकन के उपयोग को हतोत्साहित करता है

इसे सक्षम करने के लिए निम्न कोड जोड़ें

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

इस लेख के लेखक को श्रेय जाता है


9

यदि आप एक्शन बार शीर्षक बदलना चाहते हैं, तो अपनी गतिविधि के ऑनक्रिएट () में निम्नलिखित 1 लाइन कोड दें

getActionBar().setTitle("Test");

मैं इस शीर्षक को कैसे बदल सकता हूँ?
श्रीकर रेड्डी

7

आप अपने संबंधित ड्रा करने योग्य फ़ोल्डर में जो भी आइकन चाहते हैं, उसे जोड़कर आइकन बदल सकते हैं, फिर इस पंक्ति को अपने AndroidManifest.xml फ़ाइल में बदल सकते हैं:

android:icon="@drawable/ic_launcher"

आपके आइकन का नाम जो भी है उसमें मिलान करने के लिए। या अपने आइकन को ic_launcher के रूप में रखें, यदि वे समान आइकन हैं। जैसा कि यह कहता है, जो भी तार आपके रेस / मान / स्ट्रिंग्स.xml फ़ाइल में मेल खाते हैं, उन्हें जोड़ या बदल सकते हैं। फिर, एक बार फिर से अपने AndroidManifest.xml फ़ाइल में, इस लाइन को बदलें:

android:label="@string/app_name"

जो भी स्ट्रिंग आपके पास है। आपको यह पूरी तरह से आवेदन के लिए करना होगा, और जो भी आप चाहते हैं, लेकिन लाइनें समान हैं।

उम्मीद है की यह मदद करेगा।


android:iconगतिविधि टैग में यह किस आकार (dp) का होना चाहिए?
cuddlecheek


5

उसके लिए, आप इसे 2 तरीकों से कर सकते हैं: एक्सएमएल या जावा। यहां देखें: एक्शन बार पर टेक्स्ट को कैसे बदलें

इसलिए:

एक्सएमएल:

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>

जावा:

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

       setContentView(R.layout.main);


       if ( customTitleSupported ) {
           getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
           }

       final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
       if ( myTitleText != null ) {
           myTitleText.setText("NEW TITLE");

           // user can also set color using "Color" and then "Color value constant"
          // myTitleText.setBackgroundColor(Color.GREEN);
       }
 }
}

2
कोड से करने के लिए, आपको कॉल करना चाहिए setTitle(CharSequence text)या setTitle(int titleRes)requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)जब तक आप अपने स्वयं के कस्टम दृश्य के साथ पूरे शीर्षक बार को बदलने की योजना नहीं बना रहे हैं, तब तक उपयोग न करें ।
कराकुरी


2

मैंने निम्नलिखित कॉल का उपयोग अंदर किया onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());


1

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

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

डिफ़ॉल्ट रूप से एक्शन बार शीर्षक, वर्तमान गतिविधि के लेबल का उपयोग करेगा, लेकिन आप इसे प्रोग्रामेटिक रूप से भी सेट कर सकते हैं ActionBar.setTitle()

"बैक" (और अधिक सटीक, "अप") बटन कार्यक्षमता को लागू करने के लिए आप जिस बारे में बात कर रहे हैं, एक्शन बार डेवलपर गाइड के "नेविगेशन के लिए ऐप आइकन का उपयोग करना" अनुभाग पढ़ें ।

अंत में, आइकन को बदलने के लिए, गाइड कवर करता है। संक्षेप में, एक्शन बार android:iconआपके मेनिफेस्ट applicationया activityएलिमेंट में दी गई इमेज को प्रदर्शित करेगा , यदि कोई है। विशिष्ट अभ्यास एक एप्लिकेशन आइकन बनाना है (जिसे आपकी आवश्यकता के सभी विभिन्न घनत्वों में नाम दिया गया है) ic_launcher.png, और इसे अपनी drawable-*निर्देशिकाओं में रखें।


0

मुझे non-static method setTitle(CharSequence) cannot be referenced from a static contextत्रुटि मिली क्योंकि मैंने setTitle()स्थैतिक प्लेसहोल्डर फ़्रेग्मेंट क्लास में उपयोग किया था। मैंने इसका उपयोग करके हल कियाgetActivity().getActionBar().setTitle("new title");


0

यह प्रकट करने के लिए कि आप किस विशिष्ट गतिविधि में एक्शन बार शीर्षक नाम बदलना चाहते हैं और Android लिखना चाहते हैं: लेबल = "शीर्षक नाम"


0

AndroidManifest.xml फ़ाइल पर जाएं । <application>टैग ढूंढें वहाँ आप एक विशेषता देख सकते हैं

android:label="@string/app_name"

अब res> मान> strings.xml पर जाएं

बदलाव

<string name="app_name">MainActivity</string> 

सेवा

<string name="app_name">Your Desired Name</string>

उदाहरण

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

strings.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

आप निम्नानुसार भी कर सकते हैं:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.