एक्शन बार पर टेक्स्ट कैसे बदलें


230

वर्तमान में यह केवल एप्लिकेशन का नाम प्रदर्शित करता है और मैं चाहता हूं कि यह कुछ कस्टम प्रदर्शित करे और मेरे ऐप में प्रत्येक स्क्रीन के लिए अलग हो।

उदाहरण के लिए: मेरी होम स्क्रीन एक्शन बार में 'पेज 1' कह सकती है जबकि दूसरी गतिविधि जिसे ऐप स्विच करता है, उस स्क्रीन एक्शन बार में 'पेज 2' हो सकता है।

जवाबों:


358

अद्यतन: नवीनतम ActionBar (शीर्षक) पैटर्न:

FYI करें, ActionBar को एपीआई स्तर 11 में पेश किया गया था। ActionBar गतिविधि के शीर्ष पर एक विंडो सुविधा है जो गतिविधि शीर्षक , नेविगेशन मोड और खोज जैसे अन्य इंटरैक्टिव आइटम प्रदर्शित कर सकती है ।

मुझे टाइटल बार को कस्टमाइज़ करने और एप्लिकेशन के अनुरूप बनाने के बारे में बिल्कुल याद है। इसलिए मैं पहले के दिनों के साथ तुलना कर सकता हूं और एक्शनबार के उपयोग के कुछ फायदों को सूचीबद्ध कर सकता हूं:

  1. यह आपके उपयोगकर्ताओं को अनुप्रयोगों के पार एक परिचित इंटरफ़ेस प्रदान करता है जो सिस्टम अलग स्क्रीन कॉन्फ़िगरेशन के लिए इनायत करता है।
  2. गतिविधि शीर्षक, आइकन और नेविगेशन मोड प्रदर्शित करने के लिए डेवलपर्स को बहुत कोड लिखने की आवश्यकता नहीं है क्योंकि ActionBar पहले से ही शीर्ष स्तर के अमूर्त के साथ तैयार है।

उदाहरण के लिए:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

=> सामान्य तरीका,

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

=> कस्टमाइज़िंग एक्शन बार,

उदाहरण के लिए:

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

स्टाइल एक्शन बार:

ActionBar आपको प्रदर्शन करने के लिए बुनियादी और परिचित रूप, नेविगेशन मोड और अन्य त्वरित क्रियाएं प्रदान करता है। लेकिन इसका मतलब यह नहीं है कि यह हर ऐप में समान है। आप इसे अपने UI और डिज़ाइन आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं। आपको बस शैलियों और विषयों को परिभाषित और लिखना होगा।

और पढ़ें: स्टाइलिंग द एक्शन बार

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

================================================== ===============================

पुराना: पुराने दिन:

=> सामान्य तरीका,

आप प्रत्येक स्क्रीन का शीर्षक बदल सकते हैं (यानी गतिविधि) Android:label

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

=> कस्टम - शीर्षक - बार


लेकिन यदि आप अपने तरीके से शीर्षक-बार को अनुकूलित करना चाहते हैं, अर्थात Want to put Image icon and custom-text, तो निम्न कोड मेरे लिए काम करता है:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

titlebar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

TitleBar.java

public class TitleBar extends Activity {

    @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);
        }
    }
}

strings.xml

स्ट्रिंग्स.xml फ़ाइल को valuesफ़ोल्डर के अंतर्गत परिभाषित किया गया है ।

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

2
किसी गतिविधि के लिए या संपूर्ण अनुप्रयोग के लिए विश्व स्तर पर Android में कस्टम शीर्षक सेट करने के लिए इस उदाहरण का अनुसरण करें: labs.makemachine.net/2010/03/custom-android-window-title
परेश मेयानी

1
+1! इसके लिए धन्यवाद, लेकिन क्या आप बता सकते हैं कि अभिभावक के लेआउट के लिए Android: layout_width = "400px" क्यों?
क्विनिस्टर

2
@ स्पिनस्टॉर हां आप "रैप_ कॉन्टेंट" या "फिल_परेंट" का उपयोग कर सकते हैं यदि आप चाहें, तो यह सिर्फ उदाहरण के लिए है।
परेश मेयानी

जावास्क्रिप्ट के लिए कुछ संकेत?
ivy

1
मैं स्वतंत्र इकाइयों जैसे "डीपी" के बजाय "पीएक्स" का उपयोग करने के खिलाफ जाऊंगा क्योंकि बहुत से नए शिक्षार्थी कोड को तोड़ने और उससे सबसे अधिक प्राप्त करने की कोशिश करके जो जवाब दिया गया था उससे बहुत अधिक सीखते हैं।
अक्षत अग्रवाल

107

आप प्रत्येक गतिविधि के लिए अपनी प्रकट फ़ाइल में लेबल को परिभाषित कर सकते हैं।

एक गतिविधि की सामान्य परिभाषा इस तरह दिखती है:

<activity
     android:name=".ui.myactivity"
     android:label="@string/Title Text" />

जहां शीर्षक पाठ को इस गतिविधि के लिए स्ट्रिंग संसाधन की आईडी से प्रतिस्थापित किया जाना चाहिए।

यदि आप इसे गतिशील रूप से सेट करना चाहते हैं, तो आप कोड से शीर्षक पाठ भी सेट कर सकते हैं।

setTitle(address.getCity());

इस पंक्ति के साथ शीर्षक मेरी गतिविधि के ऑनक्रैट विधि में एक विशिष्ट एड्रेस के शहर के लिए सेट है।


56

आप अपने शीर्षक का उपयोग setTitleअपने भीतर प्रोग्रामेटिक रूप से परिभाषित कर सकते हैं Activity, यह विधि Stringआपकी values/strings.xmlफ़ाइल में परिभाषित एक या एक आईडी को स्वीकार कर सकती है । उदाहरण:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}

19

हम ActionBar शीर्षक को दो तरीकों में से एक में बदल सकते हैं:

  1. मैनिफेस्ट में: मैनिफ़ेस्ट फ़ाइल में, प्रत्येक गतिविधि का लेबल सेट करें।

    android:label="@string/TitleWhichYouWantToDisplay"
  2. कोड में: कोड में, सेटटाइटल () पद्धति को स्ट्रिंग के साथ या स्ट्रिंग के आईडी के रूप में तर्क के रूप में कॉल करें।

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }

16

अंदर Activity.onCreate () कॉलबैक या दूसरी जगह जहां आपको शीर्षक बदलने की आवश्यकता है:

getSupportActionBar().setTitle("Whatever title");

5

ऐसा करने की कोशिश करो ...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

इससे मेरा काम बनता है


3

थोड़ा बड़ा था, लेकिन एक ही समस्या थी। मैंने इसे इस तरह किया:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

और सुनिश्चित करें कि आपने इसे अपने AndroidManifest.xml में सेट किया है :

<activity
            ...
            android:label="@string/title_awesome_app" >
            ...
</activity>

यह आसान है और आपको अशक्त-संदर्भों और अन्य सामानों के बारे में चिंता करने की आवश्यकता नहीं है।



3

ऐक्शन बार नाम बदलने का सबसे आसान तरीका AndroidManifest.xml पर जाना है और इस कोड को टाइप करना है।

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>


1
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

अधिक जानकारी के लिए इस लिंक को देखें:

http://android--code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html


यदि आप AppCompatActivity का उपयोग कर रहे हैं, तो आप getSupportActionBar () का उपयोग कर सकते हैं
हामिद वाकिलियन

1

ऐक्शन बार नाम को बदलने का सबसे अच्छा तरीका AndroidManifest.xml पर जाना है और इस कोड को टाइप करना है।

<activity android:name=".YourActivity"
        android:label="NameYouWantToDisplay> </activity>

1

Kotlin

आप प्रोग्राम को कोटलिन में इस तरह से कर सकते हैं। आप इसे अनदेखा करते हैं यदि "supportActionBar" शून्य है :

    supportActionBar?.setTitle(R.string.my_text)
    supportActionBar?.title = "My text"

या इस तरह से। यह एक अपवाद फेंकता है यदि "supportActionBar" शून्य है।

    supportActionBar!!.setTitle(R.string.my_text)
    supportActionBar!!.title = "My text"

0

this.setTitle("...")यदि आप गतिविधि में हैं तो सबसे आसान तरीका है कॉल करना । और अगर आप एक टुकड़े में हैं, तो बस फोन करें getActivity().setTitle("...");

इस तरह से आप कभी भी शीर्षक बदल सकते हैं, इससे पहले इसे कॉल करने की आवश्यकता नहीं है setContentView(R.layout.activity_test);


0

भविष्य के डेवलपर्स के लिए जो एंड्रॉइड एक्स और नेविगेशन आर्किटेक्चर घटक का उपयोग कर रहे हैं

ऊपर दिए गए किसी एक समाधान का उपयोग करके टूलबार शीर्षक सेट करने के बजाय , जो बहुत दर्दनाक हो सकता है यदि आप इसे गतिशील रूप से बैक स्टैक परिवर्तन पर सेट करना चाहते हैं, तो आप एक प्लेसहोल्डर सेट कर सकते हैं निम्न की तरह नेविगेशन ग्राफ़ में टुकड़े के शीर्षक के लिए :

<fragment
    android:id="@+id/some_fragment"
    android:name="package.SomeFragment"
    android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        android:name="placeholder"
        app:argType="string" />
</fragment>

का उपयोग करके प्लेसहोल्डर मूल्य प्रदान किया जाना है FragmentDirections (एक्शन विधि के माध्यम से) ।

फिर इसे शीर्षक में बदल दिया जाता है और जैसे Hello World(जब) दिखाया जाता हैplaceholder = "World" ) ।


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