শিরোনাম পটভূমি রঙ সেট করুন


106

আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে আমি মান / বেসিক শিরোনাম বারটি রঙ পরিবর্তন করতে চাই।

আপনার কাছে থাকা পাঠ্যের রঙ setTitleColor(int color)পরিবর্তন করতে, বারের পটভূমির রঙ পরিবর্তন করার কোনও উপায় আছে কি?


আমি মনে করি শিরোনাম বারে পটভূমির রঙ পরিবর্তন করতে কাস্টম শিরোনাম ব্যবহার করার দরকার নেই। এই পোস্টটি দেখুন
দীপ্তি জাবিলি

আমি পুরানো স্বীকৃত উত্তরটির পরিবর্তে এডউইনফাদের উত্তরটি দেখতে চাই।
zgc7009

উত্তর:


186

এই থ্রেডটি আপনাকে একটি এক্সএমএল ফাইলে আপনার নিজস্ব শিরোনাম বার তৈরি এবং এটি আপনার ক্রিয়াকলাপে ব্যবহার করে শুরু করবে

সম্পাদন করা

উপরের লিঙ্কটির সামগ্রীর সংক্ষিপ্তসারটি এখানে দেওয়া হয়েছে - এটি কেবল পাঠ্যের রঙ এবং শিরোনাম বারের পটভূমি নির্ধারণ করার জন্য - কোনও আকার পরিবর্তন, কোনও বোতাম, কেবলমাত্র সরলতম নমুনা

রেজ / লেআউট / mytitle.xML - এটি এমন ভিউ যা শিরোনাম বারকে উপস্থাপন করবে

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  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"
   />

res / মান /ums.xml - আমরা ডিফল্ট অ্যান্ড্রয়েড থিম রাখতে চাই এবং কেবল শিরোনামের পটভূমির পটভূমির রঙ পরিবর্তন করতে হবে। সুতরাং আমরা একটি থিম তৈরি করি যা ডিফল্ট থিমটি উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং আমাদের নিজস্ব শৈলীতে ব্যাকগ্রাউন্ড শৈলী সেট করে।

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customTheme" parent="android:Theme"> 
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>   
    </style> 
</resources>

res / মান / শৈলী.এক্সএমএল - এখানে আমরা শিরোনামের পটভূমির জন্য যে রঙটি চাই তা ব্যবহার করতে থিমটি সেট করেছি

<?xml version="1.0" encoding="utf-8"?>
<resources> 
   <style name="WindowTitleBackground">     
        <item name="android:background">@color/titlebackgroundcolor</item>                   
    </style>
</resources>

res / মান / color.xML - আপনি চান রঙ এখানে সেট করুন

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

ইন AndroidManifest.xml , অ্যাপ্লিকেশন (পুরো অ্যাপ্লিকেশনের জন্য) (শুধুমাত্র এই কর্মকান্ডের) ট্যাগ অথবা কার্যকলাপ পারেন থিম বৈশিষ্ট্য নির্ধারণ করে

<activity android:name=".CustomTitleBar" android:theme="@style/customTheme" ...

ক্রিয়াকলাপ থেকে (কাস্টম টাইটেলবার নামে পরিচিত):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);

}

9
বেশিরভাগ সময় কেবল একটি লিঙ্ক সরবরাহ করা খুব সস্তা এবং স্ট্যাকওভারফ্লোতে আসলে উত্তর পছন্দ হয় না। এই পৃষ্ঠায় লিঙ্ক থেকে কিছু জ্ঞান পাওয়ার চেষ্টা করুন। আপনি সম্প্রদায়টিতে আরও বেশি করে জ্ঞান পাবেন এবং লিঙ্কটি নিচে থাকলেও উত্তর দেওয়ার পরেও এমন কিছু অনুসন্ধানের শর্তাদি সরবরাহ করে যা অন্যান্য লোককে দিকনির্দেশনা দিতে পারে।
জানুশ

7
@ জানুস: আপনি পুরোপুরি ঠিক বলেছেন - তাই আমি সহজতম নমুনা দিয়ে পোস্টটি আপডেট করেছি যাতে লোকেরা উপরের লিঙ্কটিতে থ্রেডটি পড়ার পরিবর্তে শুরু করতে পারে
চেচেনসন

3
অ্যান্ড্রয়েড স্টাইলিং ওভাররাইট করার পরে আপনার কেবল ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করতে চাইলে কোড থেকে কাস্টম শিরোনাম যুক্ত করার দরকার নেই
জানুশ

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

2
এটি শিরোনামের পটভূমির রঙ পরিবর্তন করছে না কেবল পাঠ্যের রঙই পরিবর্তিত হচ্ছে। এমনকি আমি যদি শিরোনাম বারের রঙটি পরিবর্তন করছি <color name = "titlebackgroundcolor"> # 3232CD </color>। আমি কি ভুল কিছু করছি?
শায়েস্তা নাজ

18

এই স্পষ্ট ব্যাখ্যার জন্য ধন্যবাদ, তবে আমি একটি যুক্ত লিঙ্ক জিজ্ঞাসা করে আপনার উত্তরে আরও কিছুটা যুক্ত করতে চাই (সত্যিকার অর্থে এটি আমার প্রশ্নের ভিত্তি হওয়ায় কোনও নতুন পোস্ট করতে চান না)।

আমি একটি সুপারক্লাসে আমার শিরোনাম বারটি ঘোষণা করছি যা থেকে আমার সমস্ত অন্যান্য ক্রিয়াকলাপ শিশুদের বারের রঙটি একবারে পরিবর্তন করতে হবে change আমি বারটিতে একটি আইকন যুক্ত করতে এবং পাঠ্য পরিবর্তন করতে চাই। আমি কিছু টেস্টিং করেছি, এবং এক বা অন্যটি পরিবর্তন করতে পরিচালিত হয়েছে তবে একই সাথে উভয়ই নয় (setFeatureDrawable এবং setTitle ব্যবহার করে)। আদর্শ সমাধানটি অবশ্যই লিঙ্কটিতে প্রদত্ত থ্রেডের ব্যাখ্যাটি অনুসরণ করা হবে, তবে আমি একটি সুপারক্লাসে যেমন ঘোষণা করছি, সেট কনটেন্টভিউ এবং আর.আইডি.মি. কাস্টমবারের লেআউটের কারণে আমার একটি সমস্যা আছে, কারণ যদি আমি মনে রাখবেন আমি একবার মাত্র সেটকন্টেন্টভিউ কল করতে পারি ...

সম্পাদনা পাওয়া আমার উত্তর:

যারা আমার মতো সুপারক্লাসের সাথে কাজ করতে পছন্দ করেন কারণ কোনও অ্যাপ্লিকেশনে যে কোনও জায়গায় মেনু পাওয়ার জন্য এটি দুর্দান্ত, এটি এখানে একই কাজ করে।

এটি কেবল আপনার সুপারক্লাসে যুক্ত করুন:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.customtitlebar);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar);
    customTitleText = (TextView) findViewById(R.id.customtitlebar);

(আপনাকে পাঠ্যদর্শনটি সুরক্ষিত শ্রেণীর ভেরিয়েবল হিসাবে ঘোষণা করতে হবে)

এবং তারপরে এর শক্তিটি হ'ল, আপনার অ্যাপের যে কোনও জায়গায় (উদাহরণস্বরূপ যদি আপনার সমস্ত ক্রিয়াকলাপ এই শ্রেণীর শিশু হয়), আপনাকে কেবল কল করতে হবে

customTitleText.setText("Whatever you want in title");

এবং আপনার শিরোনামবারটি সম্পাদনা করা হবে।

আমার মামলার সাথে সম্পর্কিত এক্সএমএল হ'ল (আর.লেআউটআউট.কাস্টম শিরোনাম):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/background">
<ImageView android:layout_width="25px" android:layout_height="25px"
    android:src="@drawable/icontitlebar"></ImageView>
<TextView android:id="@+id/customtitlebar"
    android:layout_width="wrap_content" android:layout_height="fill_parent"
    android:text="" android:textColor="@color/textcolor" android:textStyle="bold"
    android:background="@color/background" android:padding="3px" />
</LinearLayout>

আমাকে কেন ভোট দেওয়া হচ্ছে? আমার কোডে কী ভুল? এটা আমার জন্য পুরোপুরি কাজ করে ...
Sephy

1
একজন শিক্ষানবিস হিসাবে আমি অনুভব করি যে উপরেরটি ভাল ব্যাখ্যা সহ একটি দুর্দান্ত কোড। আপনার জন্য +1 !!!
আর কে

@ সেফী আমাকে কি টাইটেল বারের জন্য আলাদা ক্লাস করতে হবে তবেই আমি এটি ব্যবহার করতে পারি?
বিকাশ গুপ্ত

এটি এখানে কাজ করছে না stackoverflow.com/questions/31157222/…
আদিত্য

11

পটভূমির রঙ পরিবর্তন করার অন্য একটি উপায় রয়েছে, তবে এটি হ্যাক এবং উইন্ডোটির ভিউ স্তরক্রম এবং এর শিরোনাম পরিবর্তন করা থাকলে অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলিতে ব্যর্থ হতে পারে। তবে কোডটি ক্রাশ হবে না, কেবলমাত্র এমন ক্ষেত্রে পছন্দসই রঙ সেট করা মিস করবে।

আপনার ক্রিয়াকলাপে, অনক্রিটের মতো করুন:

View titleView = getWindow().findViewById(android.R.id.title);
if (titleView != null) {
  ViewParent parent = titleView.getParent();
  if (parent != null && (parent instanceof View)) {
    View parentView = (View)parent;
    parentView.setBackgroundColor(Color.rgb(0x88, 0x33, 0x33));
  }
}

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

আমি মনে করি উপরোক্ত নির্বাচিত উত্তরে আপনার সমাধান রয়েছে। আপনাকে ক্রিয়াকলাপের জন্য একটি কাস্টম থিম সংজ্ঞায়িত করতে হবে এবং এর অ্যান্ড্রয়েড: উইন্ডোটিটলব্যাকগ্রাউন্ড স্টাইলটি আপনার পছন্দ মতো রঙে সেট করতে হবে।
মাইকেপ্লেট

7

এই কোডটি অ্যান্ড্রয়েডে প্রোগ্রামিকভাবে শিরোনাম বারের পটভূমি পরিবর্তন করতে সহায়তা করে। আপনার যে কোনও রঙে রঙ পরিবর্তন করুন।

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833")));

}

এটি এপিআই 11 (3.0 হানিকম্ব) এ প্রবর্তিত হয়েছিল যা এটিকে বৈধ বিকল্প হিসাবে বিবেচনা করার জন্য অবশ্যই এই পর্যায়ে যথেষ্ট পুরানো।
zgc7009

তবে এখনও আমি আমার সাম্প্রতিক অ্যাপ্লিকেশনগুলিতে টার্গেটএসডিভি ভার্সন = "23" এর সাথে কোনও অবহেলিত তথ্য না পেয়ে এটি ব্যবহার করছি।
এডউইনফ্যাড

অবশ্যই এটি ব্যবহার করা 100% জরিমানা। এটি কোনও কিছুর সাথে প্রতিস্থাপন করা হয়নি, তবে এপিআই 11 এর আগে এটি ব্যবহার করা (যা খুব কম লোকই করবে) এড়ানো উচিত, কমপক্ষে সামঞ্জস্যের লাইব্রেরি ছাড়া।
zgc7009

উল্লেখযোগ্য। @ zgc7009
এডউইনফ্যাড

1
পরিবর্তে getSupportActionBar () ব্যবহার করুন যদি আপনি অ্যাপকম্প্যাটএকটিভিটি ব্যবহার করছেন
সোমবার

6
protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View titleView = getWindow().findViewById(android.R.id.title);
    if (titleView != null) {
      ViewParent parent = titleView.getParent();
      if (parent != null && (parent instanceof View)) {
        View parentView = (View)parent;
        parentView.setBackgroundColor(Color.RED);
      }
    }

উপরের কোডে আপনি চেষ্টা করতে পারেন শিরোনামবারের পরিবর্তে শিরোনাম ব্যবহার করতে পারেন এটি আপনার প্রয়োগের সমস্ত ক্রিয়াকলাপকে প্রভাবিত করবে


2

আমি মনে করি না। আপনি শিরোনামহীন ক্রিয়াকলাপ তৈরি করতে পারেন এবং ক্রিয়াকলাপ বিন্যাসে আপনার নিজস্ব শিরোনাম বার তৈরি করতে পারেন।

পরীক্ষা করে দেখুন এই , লাইন 63 এবং নীচে:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)

ডিফল্ট শিরোনাম দেখার পরিবর্তে কাস্টমভিউ সেট করে।


আমি কীভাবে / কাস্টম / নিজস্ব শিরোনাম বার তৈরি করতে পারি?
থাইজার

2

একটি উঁকি নিতে platforms/android-2.1/data/res/layout/screen.xmlSDK এর। এটি সেখানে একটি শিরোনাম সংজ্ঞায়িত বলে মনে হচ্ছে। আপনি প্রায়শই এর মতো লেআউটগুলি পরীক্ষা করতে পারেন এবং style="?android:attr/windowTitleStyle" স্টাইলগুলি ধার নিতে পারেন যা আপনি নিজের টেক্সটভিউতে ব্যবহার করতে এবং ওভাররাইড করতে পারেন।

এমনকি আপনি সরাসরি টুইট করার জন্য শিরোনামটি নির্বাচন করতে সক্ষম হতে পারেন:

TextView title = (TextView)findViewById(android.R.id.title);

1
উপরে ভাল উত্তর কিন্তু এটির জন্য কাস্টম বিন্যাস তৈরি না করে শিরোনাম বারটি রঙ করা কি সম্ভব?
এানো

2

নিম্নলিখিত কোড দিয়ে চেষ্টা করুন

View titleView = getWindow().findViewById(android.R.id.title);
    if (titleView != null) {
      ViewParent parent = titleView.getParent();
      if (parent != null && (parent instanceof View)) {
        View parentView = (View)parent;
        parentView.setBackgroundColor(Color.RED);
      }
    }

এছাড়াও এই লিঙ্কটি এটি খুব কার্যকর ব্যবহার করুন: http://nathanael.hevenet.com/android-dev-changing-tit-leitle-bar-background/


এটি এখনও ললিপপ নিয়ে কাজ করে? শিরোনামভিউ আমার কাছে শূন্য ফিরে আসবে বলে মনে হচ্ছে।
ওয়ার্ল্ডএসএস

1

গুগল সরবরাহিত ভি 7 অ্যাপকম্প্যাট সমর্থন লাইব্রেরি ব্যবহার করে শিরোনাম বারটির রঙ পরিবর্তন করার একটি সহজ বিকল্প আছে।

এই সমর্থন লাইব্রেরিটি কীভাবে সেটআপ করবেন সে সম্পর্কে এই লিঙ্কটি দেখুন: https://developer.android.com/tools/support-library/setup.html

একবার এটি হয়ে গেলে, আপনার রেজ / মান / স্টাইলস.এক্সএমএল ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করা যথেষ্ট:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<!-- Actionbar Theme -->
<style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/titlebackgroundcolor</item>
</style>

(ধরে নিই যে "শিরোনাম ব্যাকগ্রাউন্ড কালার" আপনার রেজোল / মান / রং। এক্সএমএলে সংজ্ঞায়িত করা হয়েছে, যেমন:

<color name="titlebackgroundcolor">#0000AA</color>

)


আপনি যখন কেবল অ্যান্ড্রয়েড 5 লক্ষ্য করে থাকেন , তারপরে একটি আরও সহজ বিকল্প রয়েছে, [ ডেভেলপার.অ্যান্ড্রয়েড / ট্রেনিং / ম্যাটারিয়াল/… দেখুন ।
stefan.m

1

অ্যান্ড্রয়েড 5.0 (এপিআই স্তর 21) এর পরে জিনিসগুলি আরও ভাল / সহজ হয়েছে বলে মনে হচ্ছে।

আমি মনে করি আপনি যা খুঁজছেন তা এরকম কিছু:

<style name="AppTheme" parent="AppBaseTheme">
    <!-- Top-top notification/status bar color: -->
    <!--<item name="colorPrimaryDark">#000000</item>-->
    <!-- App bar color: -->
    <item name="colorPrimary">#0000FF</item>
</style>

রেফারেন্সের জন্য এখানে দেখুন:

https://developer.android.com/training/material/theme.html#ColorPalette


1

আমি "পুনরায়" -> "মান" -> "রং.এক্সএমএল" - এ স্টাইলের বর্ণ পরিবর্তন করে এটি করেছি done এখানে চিত্র বর্ণনা লিখুন

এটি পুরো প্রকল্পের রঙ পরিবর্তন করবে যা আমার সাথে ভাল fine

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


0

তুমি এটা ব্যবহার করতে পারো.

  toolbar.setTitleTextColor(getResources().getColor(R.color.white));

0

সেট কোড্ট ভিউয়ের পরে বা অনক্রিটে এই কোডটি আটকান

আপনার যদি কোনও রঙ কোড থাকে তবে এটি ব্যবহার করুন;

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#408ed4")));

আপনি যদি রঙিন গ্রন্থাগার থেকে একটি নির্দিষ্ট কোড চান তবে এটি ব্যবহার করুন;

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