अपने एंड्रॉइड एप्लिकेशन में मैं रंग बदलने के लिए मानक / मूल शीर्षक बार चाहता हूं।
आपके पास setTitleColor(int color)
मौजूद टेक्स्ट कलर को बदलने के लिए , क्या बार का बैकग्राउंड कलर बदलने का कोई तरीका है?
अपने एंड्रॉइड एप्लिकेशन में मैं रंग बदलने के लिए मानक / मूल शीर्षक बार चाहता हूं।
आपके पास setTitleColor(int color)
मौजूद टेक्स्ट कलर को बदलने के लिए , क्या बार का बैकग्राउंड कलर बदलने का कोई तरीका है?
जवाबों:
यह धागा आपको एक xml फ़ाइल में अपना खुद का शीर्षक बार बनाने और अपनी गतिविधियों में इसका उपयोग करने के साथ शुरू होगा
संपादित करें
यहाँ ऊपर दिए गए लिंक की सामग्री का एक संक्षिप्त सारांश है - यह सिर्फ पाठ का रंग और शीर्षक पट्टी की पृष्ठभूमि निर्धारित करने के लिए है - कोई आकार नहीं, कोई बटन नहीं, बस सबसे सरल नमूना
रेस / लेआउट / 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 / मान / themes.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 / मान / styles.xml - यह वह जगह है जहाँ हम शीर्षक पृष्ठभूमि के लिए इच्छित रंग का उपयोग करने के लिए थीम सेट करते हैं
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WindowTitleBackground">
<item name="android:background">@color/titlebackgroundcolor</item>
</style>
</resources>
Res / मान / colours.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" ...
गतिविधि से (जिसे CustomTitleBar कहा जाता है):
@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);
}
इस स्पष्ट स्पष्टीकरण के लिए धन्यवाद, हालांकि मैं एक जुड़ा हुआ प्रश्न पूछकर आपके उत्तर में थोड़ा और जोड़ना चाहूंगा (वास्तव में एक नया पोस्ट नहीं करना चाहता क्योंकि यह मेरे प्रश्न पर तहखाने है)।
मैं अपने टाइटलबार को एक सुपरक्लास में घोषित कर रहा हूं जिसमें से, मेरी अन्य सभी गतिविधियाँ बच्चे हैं, बार का रंग केवल एक बार बदलना है। मैं एक आइकन जोड़ना चाहूंगा और बार में टेक्स्ट बदलूंगा। मैंने कुछ परीक्षण किए हैं, और एक या दूसरे को बदलने में कामयाब रहा है लेकिन दोनों एक ही समय में (setFeatureDrawable और setTitle का उपयोग करके) नहीं। आदर्श समाधान निश्चित रूप से लिंक में दिए गए थ्रेड में स्पष्टीकरण का पालन करने के लिए होगा, लेकिन जैसा कि मैं एक सुपरक्लास में घोषणा कर रहा हूं, मेरे पास सेट-कंटेंटव्यू और R.id.myCustomBar में लेआउट के कारण एक समस्या है, क्योंकि यदि मैं अच्छी तरह से याद है मैं केवल एक बार setContentView कॉल कर सकता हूँ ...
EDIT को मेरा उत्तर मिला:
उन लोगों के लिए, जो मेरे जैसे हैं, सुपरक्लास के साथ काम करना पसंद करते हैं क्योंकि यह एक ऐप में हर जगह उपलब्ध मेनू के लिए बहुत अच्छा है, यह यहाँ भी काम करता है।
बस इसे अपने सुपरक्लास में जोड़ें:
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 जुड़ा हुआ है (R.layout.customtitlebar):
<?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>
पृष्ठभूमि का रंग बदलने का एक और तरीका है, हालांकि यह एक हैक है और एंड्रॉइड के भविष्य के संस्करणों पर विफल हो सकता है यदि विंडो का पदानुक्रम और इसका शीर्षक बदल गया है। हालाँकि, कोड क्रैश नहीं होगा, बस ऐसे मामले में वांछित रंग सेट करना याद रखें।
अपनी गतिविधि में, onCreate की तरह, करें:
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
एसडीके की एक झलक ले लो । ऐसा लगता है कि वहां एक शीर्षक परिभाषित किया गया है। आप अक्सर इस तरह से लेआउट की जांच कर सकते हैं और उन style="?android:attr/windowTitleStyle"
शैलियों को उधार ले
सकते हैं जिन्हें आप तब उपयोग कर सकते हैं और अपने स्वयं के TextViews में ओवरराइड कर सकते हैं।
आप ऐसा करने के लिए भी सीधे ट्विकिंग के लिए शीर्षक का चयन करने में सक्षम हो सकते हैं:
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://nathanel.hevenet.com/android-dev-changing-the-title-bar-background/
Google द्वारा प्रदान की गई v7 appcompat सपोर्ट लाइब्रेरी का उपयोग करके टाइटल बार का रंग बदलने का एक आसान विकल्प है।
इस समर्थन लाइब्रेरी को सेटअप करने के तरीके के बारे में इस लिंक को देखें: https://developer.android.com/tools/support-library/setup.html
एक बार जब आप ऐसा कर लेते हैं, तो यह आपके रेस / मान / स्टाइल.xml फ़ाइल में निम्न पंक्तियाँ जोड़ने के लिए पर्याप्त है:
<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
इस कोड को setContentView या onCreate के बाद पेस्ट करें
यदि आपके पास रंग कोड है, तो इसका उपयोग करें;
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#408ed4")));
यदि आप कलर लाइब्रेरी से एक विशिष्ट कोड चाहते हैं, तो इसका उपयोग करें;
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));