سؤال

يعرض حاليًا اسم التطبيق فقط وأريد أن يعرض شيئًا مخصصًا ويكون مختلفًا لكل شاشة في تطبيقي.

على سبيل المثال:يمكن أن تحتوي شاشتي الرئيسية على "صفحة 1" في شريط الإجراءات بينما يمكن أن يحتوي النشاط الآخر الذي يتحول إليه التطبيق على "صفحة 2" في شريط إجراءات تلك الشاشات.

هل كانت مفيدة؟

المحلول

تحديث:أحدث نمط لشريط الإجراءات (العنوان):

لعِلمِكَ، شريط العمل تم تقديمه في API المستوى 11.ActionBar عبارة عن ميزة نافذة في الجزء العلوي من النشاط والتي قد تعرض عنوان النشاط, وأوضاع التنقل والعناصر التفاعلية الأخرى مثل البحث.

أتذكر تمامًا تخصيص شريط العنوان وجعله متسقًا من خلال التطبيق.لذلك يمكنني إجراء مقارنة مع الأيام السابقة ويمكنني سرد ​​بعض مزايا استخدام ActionBar:

  1. فهو يوفر للمستخدمين واجهة مألوفة عبر التطبيقات التي يتكيفها النظام بسلاسة مع تكوينات الشاشة المختلفة.
  2. لا يحتاج المطورون إلى كتابة الكثير من التعليمات البرمجية لعرض عنوان النشاط والأيقونات وأوضاع التنقل لأن ActionBar جاهز بالفعل مع تجريد المستوى الأعلى.

على سبيل المثال:

enter image description here

enter image description here

=> بالطريقة العادية،

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 المظهر الأساسي والمألوف وأوضاع التنقل والإجراءات السريعة الأخرى التي يمكنك تنفيذها.لكن هذا لا يعني أنها تبدو متشابهة في كل تطبيق.يمكنك تخصيصه وفقًا لواجهة المستخدم ومتطلبات التصميم الخاصة بك.عليك فقط تحديد وكتابة الأنماط والموضوعات.

اقرا المزيد من: تصميم شريط الإجراءات

وإذا كنت تريد إنشاء أنماط لـ 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

يتم تعريف ملف strings.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>

نصائح أخرى

يمكنك تحديد الملصق لكل نشاط في ملف البيان الخاص بك.

يبدو التعريف الطبيعي للنشاط مثل هذا:

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

حيث يجب استبدال نص العنوان بمعرف مورد السلسلة لهذا النشاط.

يمكنك أيضًا تعيين نص العنوان من التعليمات البرمجية إذا كنت ترغب في تعيينه بشكل ديناميكي.

setTitle(address.getCity());

مع هذا السطر ، يتم تعيين العنوان على مدينة adress محددة في طريقة onCreate لنشطتي.

يمكنك تحديد العنوان الخاص بك بشكل برمجي باستخدام 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);

    }
}

يمكننا تغيير عنوان actionbar بإحدى طريقتين:

  1. في البيان: في ملف البيان ، اضبط تسمية كل نشاط.

    android:label="@string/TitleWhichYouWantToDisplay"
    
  2. في الكود: في الكود ، اتصل بالطريقة setTitle () مع سلسلة أو معرف السلسلة كوسيطة.

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

داخل النشاط.

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

حاول أن تفعل هذا ...

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

إنه يعمل بالنسبة لي

أكبر قليلاً ولكن كان لديه نفس المشكلة. لقد فعلت ذلك مثل هذا:

سلاسل. xml

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

وتأكد من تعيين هذا في الخاص بك Androidmanifest.xml:

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

إنه أمر سهل ولا داعي للقلق بشأن المراجع الفارغة وغيرها من الأشياء.

getActionBar().setTitle("edit your text"); 

أسهل طريقة لتغيير اسم شريط الإجراء هي الانتقال إلى AndroidManifest.xml واكتب هذا الرمز.

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

يمكنك فقط إضافة هذا الرمز في onCreate طريقة.

setTitle("new title");
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-to-to-change-actionbar-title_21.html

أفضل طريقة لتغيير اسم شريط الإجراء هي الانتقال إلى AndroidManifest.xml واكتب هذا الرمز.

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

أسهل طريقة هي الاتصال this.setTitle("...") إذا كنت في النشاط. وإذا كنت في جزء ، فقط اتصل getActivity().setTitle("...");

بهذه الطريقة ستتيح لك تغيير العنوان في أي وقت ، لا حاجة لاتصاله من قبل setContentView(R.layout.activity_test);

للمطورين المستقبليين الذين يستخدمون Androidx و ال الملاحة المكون المعماري.

في حين أن من تعيين عنوان شريط الأدوات باستخدام أحد الحلول أعلاه ، والذي يمكن أن يكون مؤلم جدا إذا كنت ترغب في ضبطه بشكل ديناميكي على تغيير مكدس الظهر ، يمكنك تعيين أ عنصر نائب ل لقب من الشظية في الرسم البياني للملاحة مثل ما يلي:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top