Android ऐप में Toolbar.setTitle पद्धति का कोई प्रभाव नहीं है - एप्लिकेशन नाम को शीर्षक के रूप में दिखाया गया है


298

मैं android-support-v7: 21 लाइब्रेरी का उपयोग करके सरल एप्लिकेशन बनाने की कोशिश कर रहा हूं।

कोड के टुकड़े:
MainActivity.java

public class MainActivity extends ActionBarActivity {

    Toolbar mActionBarToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
        mActionBarToolbar.setTitle("My title");
        setSupportActionBar(mActionBarToolbar);
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar            
        android:id="@+id/toolbar_actionbar"
        android:background="@null"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:fitsSystemWindows="true" />

</LinearLayout>

लेकिन टूलबार% एप्लीकेशन नाम% पर "मेरा शीर्षक" के बजाय दिखाया गया है। विधि की
तरह लगता setTitleहै कोई प्रभाव नहीं है।
मैं "मेरा शीर्षक" दिखाना चाहूंगा।

UPD: पहले, styles.xmlथा:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
</style>

इसलिए, मैंने सोचा कि एक्शनबार का उपयोग नहीं किया जाता है। मैं NoActionBarशैली माता-पिता से जोड़ता हूं :

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
</style>

लेकिन समस्या का समाधान नहीं हुआ है।


4
एफडब्ल्यूआईडब्ल्यू, मैं एपीआई स्तर 22 पर हूं, और मेरे पास एक ही मुद्दा था कि सेटसिटोर्टअनशनबेर को कॉल करने के बाद सेटटिटेल को कॉल किया जाए, लेकिन इससे पहले सेटटाइटल कॉल करने पर काम किया । जैसा कि नीचे एक उत्तर में वर्णित है, सेटसुपोर्टएशनबेर को कॉल करने के बाद, एक्शन बार टूलबार का स्वामित्व लेता है और टूलबार पर सीधे कॉल करने से काम नहीं हो सकता है। मुझे एहसास है कि आपके प्रश्न में आपने वास्तव में setSuportActionBar से पहले सेटटाइट कॉल किया था , इसलिए शायद यह कुछ ऐसा है जो हाल ही में बदल गया है। किसी भी स्थिति में, getSupportActionBar () का उपयोग करना। सेटटाइट बस के रूप में भी काम करता है।
JHH

इसी प्रश्न में पूछा गया stackoverflow.com/questions/15560904/…
JoboFive

इसे आज़माएं - "टूलबार के साथ गतिविधि के लिए एक शीर्षक कैसे सेट करें?" link.medium.com/cGVg3zVr0Z
वेडर

जवाबों:


558

समाधान मिला:

के बजाय:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);

मैंनें इस्तेमाल किया:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My title");

और यह काम करता है।


27
एक अच्छा है, लेकिन इस तरह से काम करने का कोई मतलब नहीं है और अन्य नहीं .... Android में आपका स्वागत है 101
DoruChidean

28
getSupportActionBar().setTitle("My title");'java.lang.NullPointerException' का निर्माण कर सकते हैं
प्रतीक बुटानी

8
@PratikButani जब तक टूलबार setSupportActionBar () के रूप में सेट हो जाता है, तब तक getSupportActionBar () कॉल करने से पहले ऐसा क्यों हो सकता है?
लियोन

3
अहा, आसानी से सुलझाया गया: मुखर हो जाओसमूहस्थान () (= null;
लियोन

10
दोस्तों क्या आपने वाकई @PratikButani का कमेंट इतनी बार किया है? यदि आप एक्शन बार के बिना स्टाइल थीम का उपयोग करते हैं, लेकिन कस्टम सपोर्ट टूलबार v7 और आप setSupportActionBar(mToolbar)निश्चित रूप से कॉल करना भूल जाते हैं , तो आप अशक्त हो जाएंगे, लेकिन यदि आपने इसे कॉल किया है तो बस इस संदेश को अनदेखा करें। अभी पढ़ें - developer.android.com/training/appbar/setting-up.html
user25

115

SupportActionBar सेट करने के कुछ समय बाद टूलबार के माध्यम से किसी को भी शीर्षक सेट करने की आवश्यकता है , इसे पढ़ें।

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

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("");
setSupportActionBar(mActionBarToolbar);

बाद में...

mActionBarToolbar.setTitle(title);

यह काम करता है, लेकिन ऐसा क्यों किया जाना चाहिए यह मेरे लिए कोई मतलब नहीं है। क्या किसी के पास इस बात का स्पष्टीकरण है कि यह काम क्यों करता है?
मैक्सवेल

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

1
mActionBarToolbar.setTitle (। getResources () GetString (R.string.app_name)); उत्तर के उसी जादुई प्रभाव को बनाए रखते हुए एक अच्छा डिफ़ॉल्ट शीर्षक सुनिश्चित करेगा
असलम समीह अहमद

@ यह काम करता है, बस देखते हैं कि इस जवाब में कितने वोट हैं ... आपने अभी कुछ गलत किया है
user25

@ user25, इसने मेरे लिए भी बुरा काम किया, इसने एक पिछला तीर हटा दिया। तब मुझे एक और उपाय मिला: stackoverflow.com/a/40571324/2914140this.setTitle("Title"), जहां this- एक गतिविधि का एक संदर्भ है।
कूलमाइंड

80

उपरोक्त उत्तर पूरी तरह से सच है लेकिन मेरे लिए काम नहीं कर रहा है।

मैंने निम्नलिखित चीजों के साथ अपनी समस्या को हल किया।

वास्तव में मेरा XML ऐसा है:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

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

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/confirm_order_list_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|enterAlways">

            <android.support.v7.widget.Toolbar
                android:id="@+id/confirm_order_toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

मैंने सभी विकल्प आज़माए हैं और आखिरकार मैंने सिर्फ CollapsingToolbarLayoutइसलिए हटाया क्योंकि मुझे उस विशेष में उपयोग करने की आवश्यकता नहीं है XMLइसलिए मेरा अंतिम XML पसंद है:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/confirm_order_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

अब आपको setTitle()उपरोक्त उत्तर की तरह उपयोग करना है :

mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My Title");

अब अगर आप उपयोग करना चाहते हैं CollapsingToolbarLayoutऔर Toolbarसाथ में आपको उपयोग करना setTitle()हैCollapsingToolbarLayout

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);
collapsingToolbarLayout.setTitle("My Title");

यह आपकी मदद कर सकता है। धन्यवाद।


1
यही कारण है कि समझ में आता है, को हटाने CollapsingToolbarLayoutसमस्या हल
blueware

2
मेरे लिए CollapsingToolbarLayout कार्यों के लिए शीर्षक सेट करने की चाल। आपका बहुत बहुत धन्यवाद!
mysliwiec_tech

क्या मैं उपशीर्षक को बदल सकता हूं CollapsingToolbarLayout?
nrofis

2
चूँकि आप टूलबार को CollapsingToolbarLayout के तहत नेस्टेड किया जाता है, तो यह टूलबार लेआउट के ढहने से ओवरराइड होता है। यह मेरे लिए काम करता है।
neilQ5

2
भाई तुम मेरी जान बचा लो !!! CollapsingToolbarLayout.seTitle ("शीर्षक") का उपयोग करने से पहले आपको दोनों सेट करना होगा।
जैकी चोंग

35

बस आप उपयोग करके किसी भी एक्यूटिविटी नाम को बदल सकते हैं

Acitivityname.this.setTitle("Title NAme");

1
या बस title = "Title"कोटलिन में या शायद this.setTitle("Title")जावा में।
कूलमाइंड

33

इसे आज़माएं, आप सीधे XML में शीर्षक को परिभाषित कर सकते हैं:

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

सबसे आसान, लेकिन फिर भी मुझे गतिशील रूप से कस्टम शीर्षक की आवश्यकता है, अगर आपके पास कोई विचार है
aya salama

15

प्रत्येक नवबार खंड शीर्षक के लिए शीर्षक निर्धारित करना

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    myView = inflater.inflate(R.layout.second_layout, container, false);
    getActivity().setTitle("title");

    return myView;
}

12

कोशिश करो .. यह तरीका मेरे लिए काम करता है .. !! आशा है कि यह किसी की मदद कर सकता है .. !!

<android.support.v7.widget.Toolbar  
 xmlns:app="http://schemas.android.com/apk/res-auto"  
 android:id="@+id/my_awesome_toolbar"  
 android:layout_width="match_parent"  
 android:layout_height="wrap_content"  
 android:background="?attr/colorPrimary"  
 android:minHeight="?attr/actionBarSize"  
 app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >  

<TextView  
   android:id="@+id/toolbar_title"  
   android:layout_width="wrap_content"  
   android:layout_height="wrap_content"  
   android:gravity="center"  
   android:singleLine="true"  
   android:text="Toolbar Title"  
   android:textColor="@android:color/white"  
   android:textSize="18sp"  
   android:textStyle="bold" />  

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

टूलबार में लोगो प्रदर्शित करने के लिए नीचे दिए गए स्निपेट को देखें। // सेट करने योग्य

toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo));

मुझे इसका परिणाम पता है।


धन्यवाद Ragu स्वामीनाथन .. मैं अपनी गतिविधि को एक शीर्षक देने के लिए Appcompact गतिविधि से SupportActionBar को लागू करने की कोशिश कर रहा था, लेकिन ऐसा करने में असमर्थ मुझे BaseGameActivity का विस्तार करने की आवश्यकता है। तब मैं टूलबार के लिए जाता हूं लेकिन रन करते समय शीर्षक प्रदर्शित नहीं होता है। टूलबार के अंदर टेक्स्टबॉक्स का उपयोग करने की आपकी विधि काम कर रही है। इसे उसी स्थिति में लोगों को
सुझाएं

टूलबार में ऐप लोगो सेट करने की एक विधि है। मेरे अद्यतन उत्तर की जाँच करें
Ragu स्वामीनाथन

11
 getSupportActionBar().setTitle("Your Title");

2
यह उत्तर एक ठूंठ है और इस पर टिप्पणी होनी चाहिए , क्योंकि इस तरह के छोटे उत्तरों को निम्न गुणवत्ता माना जा सकता है। एक बार जब आपके पास पर्याप्त प्रतिष्ठा होगी तो आप टिप्पणी कर पाएंगे। यदि आपके पास पर्याप्त प्रतिष्ठा नहीं है, तो इस पोस्ट को पढ़ें कि कैसे योगदान करने के लिए यदि आपके पास अभी तक पर्याप्त प्रतिष्ठा नहीं है।
आरोही

@ascripter इसका जवाब है
जेमशीट इस्केंडरोव

8

कृपया https://code.google.com/p/android/issues/detail?id=77763 देखें । जाहिरा तौर पर यह उस तरह काम करने वाला है। एक बार जब आप setSupportActionBar()विधि कॉल को कॉल करते हैं, तो कॉल को सही दृश्य में रूट करने के लिए ActionBar प्रतिनिधि की जिम्मेदारी है।


1
वह एक्शनबार प्रतिनिधि क्या है? यहाँ setTitle () टूलबार के लिए काम नहीं करता है और न ही सपोर्ट एक्शनबार के लिए। मूल एक्शनबार थीम में अक्षम है। क्या गलत है? अगर केवल सोर्स कोड अटैचमेंट एंड्रॉइड स्टूडियो में काम करता है तो मैं खुद समस्या का पता लगा सकता हूं!
विंडराइडर

6

मैंने टुकड़े से टूलबार का नाम बदलने की कोशिश की

इससे मुझे मदद मिली, मुझे उम्मीद है कि मैं किसी और की मदद करूंगा

Activity activity = this.getActivity();
Toolbar toolbar = (Toolbar) activity.findViewById(R.id.detail_toolbar);
        if (toolbar != null) {
            activity.setTitle("Title");
        }

//toolbar.setTitle("Title"); did not give the same results

स्क्रीनशॉट: यहां छवि विवरण दर्ज करें


6

यह सिर्फ के बारे में नहीं है .setTitle

समर्थन टूलबार की अधिक विधियाँ (Appcompat v7) onCreateकेवल साथ काम करती हैं

getSupportActionBar().method()

और साथ काम नहीं करते mToolbar.method()

उदाहरण:

getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

अगले तरीकों हालांकि बिना ठीक काम करता है getSupportActionBar()मेंonCreate

mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //
    }

केवल onCreateघटना के साथ समस्या , आप अभी भी mToolbar.setTitle()बाद में कष्टप्रद के बजाय उपयोग कर सकते हैं getSupportActionBar().setTitle(), उदाहरण के लिए यदि आप onCreateइसे इसमें जोड़ते हैं तो काम करेगा (क्योंकि इसे बाद में निष्पादित किया जाएगा, बाद में onCreate)

mHandler.post(new Runnable() {
    @Override
    public void run() {
        mToolbar.setTitle("toolbar title");
    }
});

मैं इस समाधान का उपयोग करना पसंद https://stackoverflow.com/a/35430590/4548520 से https://stackoverflow.com/a/26506858/4548520 क्योंकि अगर आप शीर्षक कई बार बदल (विभिन्न कार्यों में) यह उपयोग करने के लिए और अधिक आरामदायक है एक mToolbar.setTitle()से अधिक समय getSupportActionBar().setTitle()और आप के साथ अशक्त अपवाद के बारे में कष्टप्रद अधिसूचना नहीं देखते हैंgetSupportActionBar().setTitle()


यदि आप शीर्षक को कई बार बदलना चाहते हैं और ढहने वाले टूलबार का उपयोग कर रहे हैं, तो इससे मदद मिलेगी: stackoverflow.com/questions/26486730/…
user1506104

6

SupportActionBar (@sorianiv) सेट करने के कुछ समय बाद टूलबार के माध्यम से किसी को भी सेट करने की आवश्यकता है और यह आपके Toolbarअंदर है CollapsingToolbarLayout, इसे पढ़ें:

mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
//toolbar.setTitle(""); // no need to do this
//mToolbarLayout.setTitle("Title"); // if you need an initial title, do this instead
setSupportActionBar(toolbar);

फिर बाद में,

mToolbarLayout.setTitle("New Title");

5

एप्लिकेशन शीर्षक हर गतिविधि पर डिफ़ॉल्ट शीर्षक के रूप में नहीं दिखाई देगा, आप हर गतिविधि पर अलग शीर्षक डाल सकते हैं। आपकी गतिविधि फ़ाइल में ऑनक्रीट फ़ाइल को शीर्षक सेट करने के लिए बस एक पंक्ति चिपकाएँ,

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("Your Title Here");

बस "आपका शीर्षक यहाँ" पाठ को अपने पाठ में बदलें।


4

बस अपने एडेप्टर में इसका उपयोग करें, जहाँ MainActivity आपकी AppCompactActivity है। कहीं से भी बुला लो।

((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));

4

मैंने इसका उपयोग करके काम किया -

toolbar.post(new Runnable() {
            @Override
            public void run() {
                toolbar.setTitle("My Title");
            }
        });

1
postयूआई थ्रेड में शीर्षक बदलने पर आपको उपयोग करने की आवश्यकता नहीं है , जो मुझे लगता है कि 90% मामले हैं।
वादिम कोटोव

3

यदि आप CollapsibleToolbarLayoutके साथ प्रयोग कर रहे हैं Toolbarतो आपको दोनों लेआउट में शीर्षक सेट करने की आवश्यकता होगी

onCreateविधि में अपने टूलबार को एक्शन बार के रूप में सेट करें

protected void setUpToolBar() {

    if (mToolbar != null) {
        ((HomeActivity) getActivity()).setSupportActionBar(mToolbar);
        mToolbar.setTitleTextColor(Color.WHITE);
        mToolbar.setTitle("List Detail");
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity()
                        .getSupportFragmentManager().popBackStack();
            }
        });
        ((HomeActivity) getActivity()).getSupportActionBar()
                .setDisplayHomeAsUpEnabled(true);
    }
}

बाद में बस setTitleविधि का उपयोग करके टूलबार का शीर्षक अपडेट करें

 mToolbar .setTitle(productFromShoppingList.getProductName()); 
 mCollapsingToolbar.setTitle(productFromShoppingList.getProductName());

यह समाधान काम करता है यदि आप पा रहे हैं कि आप शीर्षक को एक बार सेट कर सकते हैं, लेकिन उसके बाद इसे बदल नहीं सकते। सुनिश्चित करें कि आप Collapsing टूलबार का शीर्षक सेट कर रहे हैं।
हायलियनपफबॉल

यदि आप टूलबार के ढहने के कुछ समय बाद शीर्षक बदलना चाहते हैं, तो आप ऐसा कर सकते हैं: stackoverflow.com/questions/26486730/…
user1506104

2

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

Xml कोड

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:id="@+id/tool_bar"
    android:background="@color/tablayout"
    android:theme="@style/ToolBarStyle"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title"
        android:textSize="18sp"
        android:textColor="@color/white"/>
    </android.support.v7.widget.Toolbar>

जावा कोड

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    toolbar_text = (TextView)findViewById(R.id.toolbar_title);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    toolbar.setLogo(R.drawable.ic_toolbar);
}

2

यदि आपका लक्ष्य टूलबार में एक स्थिर स्ट्रिंग सेट करना है, तो इसे करने का सबसे आसान तरीका केवल AndroidManifest.xml में गतिविधि लेबल सेट करना है:

<activity android:name=".xxxxActivity"
          android:label="@string/string_id" />

टूलबार को यह स्ट्रिंग बिना किसी कोड के मिलेगी। (मेरे लिए v27 पुस्तकालयों के साथ काम करता है।)


2

मेरा एक अजीब व्यवहार है जो आपकी मदद कर सकता है।
यह काम कर रहा है लेकिन इसका केवल onCreate में कोई प्रभाव नहीं है:

toolbar.setTitle("title");

OnCreate में इसका उपयोग करने का प्रयास करें:

yourActivityName.this.setTitle("title")

2

प्रत्येक अलग गतिविधि के लिए शीर्षक बदलने के लिए

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pizza);
    setTitle(getResources().getText(R.string.title));
}

setTitle (R.string.title); घटना आसान है, लेकिन काम नहीं करता है
toshkinl

2
 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       //custom toolbaar
       getSupportActionBar().setTitle("Abhijeet");

    }
}

1

हालांकि इस विशेष सेटअप के लिए तुरंत प्रासंगिक नहीं है, मैंने पाया कि मेरे XML से "CollapsingToolbarLayout" को हटाकर जो AppBarLayout के अंदर मेरे टूलबार को लपेट रहा था, उसने सब कुछ काम कर दिया।

तो यह:

      <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"
                app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />

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

इसके अलावा:

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/collapsingToolbar"
                android:minHeight="?attr/actionBarSize"
                app:layout_scrollFlags="enterAlways|scroll|snap">

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_height="?attr/actionBarSize"
                    app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
            </android.support.design.widget.CollapsingToolbarLayout>

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

फिर, मैंने गतिविधि के ऑनक्रिएट में शीर्षक सेट किया, इससे पहले कि setSupportActionBar () कहा जाता है।


आप ऐसा कर सकते हैं। अगर आपको वास्तव में टूलबार लेआउट के ढहने की आवश्यकता है, तो इसे देखें: stackoverflow.com/questions/26486730/…
user1506104

@ शांटेल ओसेजो ने मेरे लिए भी काम किया, यहां तक ​​कि मैं उसी लेआउट का उपयोग कर रहा था। धन्यवाद
परमजीत सिंह राणा

1

यह फ़ाइल android:labelमें आपकी गतिविधि की विशेषता सेट करके किया जा सकता है AndroidManifest.xml:

<activity android:name="my activity"
 android:label="The Title I'd like to display" />

और फिर इस लाइन को ऑनक्रिएट () में जोड़ें:

getSupportActionBar().setDisplayShowTitleEnabled(true);

0

सुनिश्चित करें कि आप इस विकल्प को जोड़ते हैं:

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);

0

उत्तर दस्तावेज में है (जिसे आप यहां पा सकते हैं ):

ActionBar उपयोगिता विधियों का उपयोग करने के लिए, गतिविधि के getSupportActionBar () विधि पर कॉल करें। यह विधि एक appcompat ActionBar ऑब्जेक्ट के लिए एक संदर्भ देता है। एक बार आपके पास वह संदर्भ हो, तो आप ऐप बार को समायोजित करने के लिए एक्शनबेर विधियों में से किसी को कॉल कर सकते हैं। उदाहरण के लिए, ऐप बार को छिपाने के लिए ActionBar.hide () पर कॉल करें।

वह समाधान है जिसे आपने वास्तव में पाया है। बस आधिकारिक दस्तावेज का संदर्भ देने के बारे में सोचा (जो स्पष्ट रूप से कुछ पढ़ने के लिए करते हैं)।


0

कोटलिन में आप ऐसा कर सकते हैं:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar

class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_settings)

        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setTitle(R.string.title)

    }

    override fun onSupportNavigateUp() = true.also { onBackPressed() }

}

-2

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

सबसे आसान तरीका है कि आपके विषय का विस्तार हो Theme.AppCompat.NoActionBar


क्षमा करें, मुझे गलत प्रश्न समझ में आया।
हरेश छलाना

1
@HareshChhelana आपने उत्तर पोस्ट किया लेकिन क्या आप जानते हैं कि वास्तव में क्या मुद्दा है?
परेश मेयानी

मुझे लगता है कि संबंधित एक्शन बार सेट टाइल का मुद्दा है कि वाई ने इस तरह के एएनएस दिए और जब आपको यह एहसास हुआ कि मैंने अपने एन्स को हटा दिया है तो अब आप मेरे गलत समझा भाई के बारे में चिंतित न हों।
हरेश छलाना

1
@PareshMayani आपके उत्तर के लिए धन्यवाद, लेकिन यह मेरी समस्या का समाधान नहीं करता है। कृपया, अपडेट किए गए प्रश्न की जांच करें
krossovochkin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.