আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে আমি মান / বেসিক শিরোনাম বারটি রঙ পরিবর্তন করতে চাই।
আপনার কাছে থাকা পাঠ্যের রঙ setTitleColor(int color)
পরিবর্তন করতে, বারের পটভূমির রঙ পরিবর্তন করার কোনও উপায় আছে কি?
আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে আমি মান / বেসিক শিরোনাম বারটি রঙ পরিবর্তন করতে চাই।
আপনার কাছে থাকা পাঠ্যের রঙ setTitleColor(int color)
পরিবর্তন করতে, বারের পটভূমির রঙ পরিবর্তন করার কোনও উপায় আছে কি?
উত্তর:
এই থ্রেডটি আপনাকে একটি এক্সএমএল ফাইলে আপনার নিজস্ব শিরোনাম বার তৈরি এবং এটি আপনার ক্রিয়াকলাপে ব্যবহার করে শুরু করবে
সম্পাদন করা
উপরের লিঙ্কটির সামগ্রীর সংক্ষিপ্তসারটি এখানে দেওয়া হয়েছে - এটি কেবল পাঠ্যের রঙ এবং শিরোনাম বারের পটভূমি নির্ধারণ করার জন্য - কোনও আকার পরিবর্তন, কোনও বোতাম, কেবলমাত্র সরলতম নমুনা
রেজ / লেআউট / 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);
}
এই স্পষ্ট ব্যাখ্যার জন্য ধন্যবাদ, তবে আমি একটি যুক্ত লিঙ্ক জিজ্ঞাসা করে আপনার উত্তরে আরও কিছুটা যুক্ত করতে চাই (সত্যিকার অর্থে এটি আমার প্রশ্নের ভিত্তি হওয়ায় কোনও নতুন পোস্ট করতে চান না)।
আমি একটি সুপারক্লাসে আমার শিরোনাম বারটি ঘোষণা করছি যা থেকে আমার সমস্ত অন্যান্য ক্রিয়াকলাপ শিশুদের বারের রঙটি একবারে পরিবর্তন করতে হবে 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>
পটভূমির রঙ পরিবর্তন করার অন্য একটি উপায় রয়েছে, তবে এটি হ্যাক এবং উইন্ডোটির ভিউ স্তরক্রম এবং এর শিরোনাম পরিবর্তন করা থাকলে অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলিতে ব্যর্থ হতে পারে। তবে কোডটি ক্রাশ হবে না, কেবলমাত্র এমন ক্ষেত্রে পছন্দসই রঙ সেট করা মিস করবে।
আপনার ক্রিয়াকলাপে, অনক্রিটের মতো করুন:
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));
}
}
এই কোডটি অ্যান্ড্রয়েডে প্রোগ্রামিকভাবে শিরোনাম বারের পটভূমি পরিবর্তন করতে সহায়তা করে। আপনার যে কোনও রঙে রঙ পরিবর্তন করুন।
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833")));
}
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);
}
}
উপরের কোডে আপনি চেষ্টা করতে পারেন শিরোনামবারের পরিবর্তে শিরোনাম ব্যবহার করতে পারেন এটি আপনার প্রয়োগের সমস্ত ক্রিয়াকলাপকে প্রভাবিত করবে
আমি মনে করি না। আপনি শিরোনামহীন ক্রিয়াকলাপ তৈরি করতে পারেন এবং ক্রিয়াকলাপ বিন্যাসে আপনার নিজস্ব শিরোনাম বার তৈরি করতে পারেন।
পরীক্ষা করে দেখুন এই , লাইন 63 এবং নীচে:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
ডিফল্ট শিরোনাম দেখার পরিবর্তে কাস্টমভিউ সেট করে।
একটি উঁকি নিতে platforms/android-2.1/data/res/layout/screen.xml
SDK এর। এটি সেখানে একটি শিরোনাম সংজ্ঞায়িত বলে মনে হচ্ছে। আপনি প্রায়শই এর মতো লেআউটগুলি পরীক্ষা করতে পারেন এবং style="?android:attr/windowTitleStyle"
স্টাইলগুলি ধার নিতে
পারেন যা আপনি নিজের টেক্সটভিউতে ব্যবহার করতে এবং ওভাররাইড করতে পারেন।
এমনকি আপনি সরাসরি টুইট করার জন্য শিরোনামটি নির্বাচন করতে সক্ষম হতে পারেন:
TextView title = (TextView)findViewById(android.R.id.title);
নিম্নলিখিত কোড দিয়ে চেষ্টা করুন
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/
গুগল সরবরাহিত ভি 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.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
সেট কোড্ট ভিউয়ের পরে বা অনক্রিটে এই কোডটি আটকান
আপনার যদি কোনও রঙ কোড থাকে তবে এটি ব্যবহার করুন;
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#408ed4")));
আপনি যদি রঙিন গ্রন্থাগার থেকে একটি নির্দিষ্ট কোড চান তবে এটি ব্যবহার করুন;
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));