অ্যাকশন বারে লেখাটি কীভাবে পরিবর্তন করবেন


230

বর্তমানে এটি কেবল অ্যাপ্লিকেশনটির নাম প্রদর্শন করে এবং আমি এটিতে চাইছি কিছু কাস্টম প্রদর্শন করুন এবং আমার অ্যাপ্লিকেশনের প্রতিটি পর্দার জন্য আলাদা হোক।

উদাহরণস্বরূপ: আমার হোম স্ক্রিনটি অ্যাকশন বারে 'পৃষ্ঠা 1' বলতে পারে এবং অ্যাপ্লিকেশনটিতে সরিয়ে নেওয়া অন্য ক্রিয়াকলাপটি সেই স্ক্রিনগুলির অ্যাকশন বারে 'পৃষ্ঠা 2' থাকতে পারে।

উত্তর:


358

আপডেট: সর্বশেষ অ্যাকশনবার (শিরোনাম) প্যাটার্ন:

এফওয়াইআই, অ্যাকশনবারটি এপিআই লেভেল ১১-এ প্রবর্তিত হয়েছিল অ্যাকশনবারটি ক্রিয়াকলাপের শীর্ষে একটি উইন্ডো বৈশিষ্ট্য যা ক্রিয়াকলাপের শিরোনাম , নেভিগেশন মোড এবং অনুসন্ধানের মতো অন্যান্য ইন্টারেক্টিভ আইটেমগুলি প্রদর্শন করতে পারে ।

আমি শিরোনাম বারটি কাস্টমাইজ করা এবং অ্যাপ্লিকেশনটির মাধ্যমে এটি সামঞ্জস্যপূর্ণ করার বিষয়ে ঠিক মনে করি। তাই আমি আগের দিনগুলির সাথে তুলনা করতে পারি এবং অ্যাকশনবার ব্যবহারের কিছু সুবিধার তালিকাবদ্ধ করতে পারি:

  1. এটি আপনার ব্যবহারকারীদের অ্যাপ্লিকেশন জুড়ে একটি পরিচিত ইন্টারফেস প্রস্তাব করে যা সিস্টেমটি বিভিন্ন স্ক্রীন কনফিগারেশনের জন্য কৃপণভাবে গ্রহণ করে।
  2. ক্রিয়াকলাপ শিরোনাম, আইকন এবং নেভিগেশন মোডগুলি প্রদর্শনের জন্য বিকাশকারীদের খুব বেশি কোড লেখার প্রয়োজন নেই কারণ অ্যাকশনবার ইতিমধ্যে শীর্ষ স্তরের বিমূর্ততা সহ প্রস্তুত।

উদাহরণ স্বরূপ:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

=> সাধারণ উপায়,

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

}

অ্যাকশন বার স্টাইলিং:

অ্যাকশনবার আপনাকে প্রাথমিক এবং পরিচিত চেহারা, নেভিগেশন মোড এবং সম্পাদন করার জন্য অন্যান্য দ্রুত ক্রিয়া সরবরাহ করে। তবে এর অর্থ এই নয় যে এটি প্রতিটি অ্যাপ্লিকেশনটিতে একই দেখাচ্ছে। আপনি আপনার ইউআই এবং ডিজাইনের প্রয়োজনীয়তা অনুসারে এটি কাস্টমাইজ করতে পারেন। আপনাকে কেবল শৈলী এবং থিম সংজ্ঞা দিতে এবং লিখতে হবে।

আরও পড়ুন এখানে: স্টিলিং অ্যাকশন বার

এবং যদি আপনি অ্যাকশনবারের জন্য শৈলী তৈরি করতে চান তবে এই স্টাইল জেনারেটর সরঞ্জামটি আপনাকে সহায়তা করতে পারে।

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

পুরানো: আগের দিনগুলি:

=> সাধারণ উপায়,

আপনি প্রতিটি স্ক্রিনের (যেমন ক্রিয়াকলাপ) সেট করে তাদের শিরোনাম পরিবর্তন করতে পারেন 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

স্ট্রিং.এক্সএমএল ফাইলটি 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
অ্যানড্রয়েডে কোনও ক্রিয়াকলাপের জন্য বা পুরো অ্যাপ্লিকেশনের জন্য বিশ্বব্যাপী কাস্টম শিরোনাম সেট করতে এই উদাহরণটি অনুসরণ করুন: labs.makemachine.net/2010/03/Custom-android-window-title
পরেশ মায়ানী

1
+1! এর জন্য আপনাকে ধন্যবাদ, তবে আপনি কি বলতে পারেন যে কেন অ্যান্ড্রয়েড: লেআউট_উইথ = "400px", মূল লিনিয়ার লেআউটে?
কুইনস্টোর

2
@ কুইনস্টর হ্যাঁ আপনি যদি চান তবে "র‌্যাপ_কন্টেন্ট" বা "ফিল_প্যারেন্ট" ব্যবহার করতে পারেন, এটি উদাহরণস্বরূপ।
পরেশ মায়ানী

জাভাস্ক্রিপ্টের জন্য কিছু ইঙ্গিত?
আইভি

1
আমি "ডিপি" এর মতো স্বতন্ত্র ইউনিটগুলির পরিবর্তে "পিএক্স" ব্যবহারের বিরুদ্ধে যাব কারণ কোডটি ভেঙে দেওয়ার এবং এর থেকে সর্বাধিক কার্যকর হওয়ার চেষ্টা করার মাধ্যমে যে উত্তর দেওয়া হয়েছিল তার চেয়ে অনেক বেশি নতুন শিক্ষার্থী অনেক কিছু শিখেছে।
অক্ষত আগরওয়াল

107

আপনি আপনার মেনিফেস্ট ফাইলটিতে প্রতিটি ক্রিয়াকলাপের জন্য লেবেলটি সংজ্ঞায়িত করতে পারেন।

কোনও ক্রিয়াকলাপের একটি সাধারণ সংজ্ঞা এর মতো দেখায়:

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

যেখানে শিরোনাম পাঠ্যটি এই ক্রিয়াকলাপের জন্য একটি স্ট্রিং উত্সের আইডি দ্বারা প্রতিস্থাপন করা উচিত।

আপনি যদি গতিশীলভাবে সেট করতে চান তবে আপনি কোড থেকে শিরোনাম পাঠ্যও সেট করতে পারেন।

setTitle(address.getCity());

এই রেখার সাথে শিরোনামটি আমার ক্রিয়াকলাপের ক্রমবর্ধমান পদ্ধতিতে একটি নির্দিষ্ট ঠিকানা হিসাবে নগরে সেট করা আছে।


56

আপনি programatically ব্যবহার করে আপনার শিরোনাম বর্ণনা করতে পারেন 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

আমরা দুটি পদ্ধতির একটিতে অ্যাকশনবার শিরোনাম পরিবর্তন করতে পারি:

  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>

এবং নিশ্চিত হয়ে নিন যে আপনি এটি আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে সেট করেছেন :

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

এটি সহজ এবং আপনাকে নাল-রেফারেন্স এবং অন্যান্য জিনিসগুলি নিয়ে চিন্তা করতে হবে না।



3

অ্যাকশন বারের নামটি পরিবর্তন করার সহজতম উপায় হ'ল অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এ গিয়ে এই কোডটি টাইপ করা।

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

2

আপনি কেবল onCreateপদ্ধতিতে এই কোডটি যুক্ত করুন ।

setTitle("new title");

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


আপনি অ্যাপকম্প্যাটএকটিভিটি
হামিদ ভ্যাকিলিয়ান

1

অ্যাকশন বারের নাম পরিবর্তন করার সর্বোত্তম উপায় হ'ল অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এ গিয়ে এই কোডটি টাইপ করা।

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

1

Kotlin

আপনি প্রোগ্রামিন্যালি কোটলিনে এটি করতে পারেন। "সমর্থনঅ্যাকশনবার" টি বাতিল হলে আপনি কেবল এটিকে এড়িয়ে যান :

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

বা এই ভাবে। "সমর্থনঅ্যাকশনবার" টি বাতিল হলে এটি একটি ব্যতিক্রম ছুঁড়ে।

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

0

this.setTitle("...")আপনি ক্রিয়াকলাপে থাকলে কল করা সবচেয়ে সহজ উপায় । এবং যদি আপনি কোনও খণ্ডে থাকেন তবে কেবল কল করুন getActivity().setTitle("...");

এই উপায় আপনাকে যে কোনও সময় শিরোনাম পরিবর্তন করতে দেবে, আগে এটি কল করার দরকার নেই setContentView(R.layout.activity_test);


0

ভবিষ্যতে ডেভেলপারদের যে ব্যবহার করছেন জন্য 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") এর মতো প্রদর্শিত হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.