it-swarm.asia

في تطبيق Android Tool Tool.setTitle ليس له أي تأثير - يظهر اسم التطبيق كعنوان

أحاول إنشاء تطبيق بسيط باستخدام مكتبة 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>

ولكن بدلاً من "العنوان الخاص بي" على اسم التطبيق٪ Toolbar ، يظهر.
يبدو أن طريقة 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>

لكن المشكلة لم تحل.

258
krossovochkin

وجدت الحل:

بدلا من:

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");

ويعمل.

515
krossovochkin

لأي شخص يحتاج إلى إعداد العنوان من خلال شريط الأدوات بعض الوقت بعد تعيين SupportActionBar ، اقرأ هذا.

يتحقق التطبيق الداخلي لمكتبة الدعم فقط مما إذا كان شريط الأدوات يحمل عنوانًا (غير فارغ) في الوقت الذي تم فيه إعداد SupportActionBar. إذا كان هناك ، فسيتم استخدام هذا العنوان بدلاً من عنوان النافذة. يمكنك بعد ذلك تعيين عنوان وهمية أثناء تحميل العنوان الحقيقي.

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

في وقت لاحق...

mActionBarToolbar.setTitle(title);
107
sorianiv

الجواب أعلاه صحيح تماما ولكن لا يعمل بالنسبة لي.

أنا حل مشكلتي مع الأشياء التالية.

في الواقع بلدي 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 لذا My Final 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() of CollapsingToolbarLayout

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

آمل أن يساعدك. شكرا لكم.

70
Pratik Butani AndroidDev

ببساطة يمكنك تغيير أي اسم النشاط باستخدام

Acitivityname.this.setTitle("Title NAme");
32
roshan posakya

جرب هذا ، يمكنك تحديد العنوان مباشرة في 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">
31
Axrorxo'ja Yodgorov

لتعيين العنوان لكل عنوان جزء Navbar

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

    return myView;
}
13
roshan posakya

جرب هذا .. هذه الطريقة تعمل لي .. !! آمل أن يساعد شخص ما .. !!

<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>  

لعرض الشعار في شريط الأدوات ، جرّب المقتطف التالي. // تعيين drawable

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

اسمحوا لي أن أعرف النتيجة.

11
Ragu Swaminathan
 getSupportActionBar().setTitle("Your Title");
10
Hanisha

يرجى الاطلاع على https://code.google.com/p/Android/issues/detail؟id=77763 . يبدو أنه من المفترض أن يعمل مثل هذا. بمجرد استدعاء استدعاء الأسلوب setSupportActionBar() ، تقع على عاتق مفوض ActionBar مسؤولية توجيه المكالمة إلى العرض الصحيح.

8
redDragonzz

الأمر لا يقتصر فقط على .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 than https://stackoverflow.com/a/26506858/4548520 لأنه إذا قمت بتغيير العنوان عدة مرات (في وظائف مختلفة) من المريح استخدام mToolbar.setTitle() أكثر من getSupportActionBar().setTitle() الأطول ولا ترى إعلامًا مزعجًا حول الاستثناء الفارغ مثل getSupportActionBar().setTitle()

5
user25

حاولت إعادة تسمية شريط الأدوات من الجزء

لقد ساعدني ذلك ، آمل أن أساعد شخصًا آخر

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

لقطة شاشة:  enter image description here

5
Nikita G.

أنا جعلت من العمل باستخدام -

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

ما عليك سوى استخدام هذا في المحول ، حيث يكون MainActivity هو AppCompactActivity الخاص بك. نسميها من أي مكان.

((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));
4
Axay Coolmoco

لدي سلوك غريب قد يساعدك.
هذا يعمل ولكن ليس له تأثير في onCreate فقط:

toolbar.setTitle("title");

حاول استخدام هذا في onCreate:

yourActivityName.this.setTitle("title")
2
user2167877

جرب هذا:

كود 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
Janakipathi Chowdary

إذا كنت تستخدم 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());
2
Hitesh Sahu

لتغيير عنوان كل نشاط مختلف

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

إذا كان هدفك هو تعيين سلسلة ثابتة في شريط الأدوات ، فإن أسهل طريقة للقيام بذلك هي ببساطة تعيين تسمية النشاط في AndroidManifest.xml:

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

سيحصل شريط الأدوات على هذه السلسلة بدون أي رمز. (يعمل لي مع v27 المكتبات.)

2
Timores

يمكن القيام بذلك عن طريق تعيين السمة Android:label لنشاطك في ملف AndroidManifest.xml:

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

ثم قم بإضافة هذا الخط إلى onCreate ():

getSupportActionBar().setDisplayShowTitleEnabled(true);
1
A-Sharabiani

على الرغم من عدم ارتباط هذا الإعداد بالتحديد ، فقد وجدت أن إزالة "CollapsingToolbarLayout" من ملف XML الخاص بي والذي كان يلف شريط الأدوات الخاص بي داخل 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>

بعد ذلك ، قمت بتعيين العنوان في onCreate للنشاط ، قبل استدعاء setSupportActionBar ().

0
Chantell Osejo

تأكد من إضافة هذا الخيار:

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
0
McLan

الجواب في الوثائق (التي يمكنك أن تجد هنا ):

لاستخدام أساليب الأداة المساعدة ActionBar ، استدعاء الأسلوب getSupportActionBar () للنشاط. تُرجع هذه الطريقة مرجعًا إلى كائن ActionBar appcompat. بمجرد الحصول على هذا المرجع ، يمكنك الاتصال بأي من أساليب ActionBar لضبط شريط التطبيق. على سبيل المثال ، لإخفاء شريط التطبيق ، اتصل بـ ActionBar.hide ().

هذا هو الحل الذي وجدته بالفعل. مجرد التفكير في إعطاء إشارة إلى الوثائق الرسمية (التي يبدو أن قلة قليلة تميل إلى القراءة).

0
Ely