2011-03-18 10 views
6

मुझे पता है कि गतिविधि के शीर्षक को स्थापित करने के दो तरीके हैं। एक तरीका यह एंड्रॉइड मेनिफेस्ट में इस एंड्रॉइड की तरह सेटिंग है: लेबल = "@ स्ट्रिंग/एप_नाम"। दूसरा प्रोग्राम गतिविधि में प्रोग्रामिंग रूप से सेटटाइटल ("हैलो वर्ल्ड!") है। दोनों तरफ बाईं तरफ स्थित हैं लेकिन मैं इसे केंद्र में कैसे रख सकता हूं?गतिविधि में शीर्षक या लेबल को केंद्र कैसे संरेखित करें?

उत्तर

5

आपको एक कस्टम शीर्षक शैली/विषय परिभाषित करने की आवश्यकता होगी। Com.example.android.apis.app.CustomTitle के लिए नमूने देखें।

+0

[AndroidRuntimeException] (http: // stackoverflow। कॉम/क्यू/11254366): आप अन्य शीर्षक सुविधाओं के साथ कस्टम शीर्षक को जोड़ नहीं सकते हैं। – ateiob

+0

@ateiob - हां, विचार यह है कि यदि आप अपने कस्टम शीर्षक में "अन्य शीर्षक सुविधाएं" चाहते हैं, तो आपको उन विशेषताओं को अपने कस्टम शीर्षक में स्वयं बनाना होगा। एंड्रॉइड नहीं जानता कि स्टॉक फीचर्स को कैसे गठबंधन किया जाए जबतक कि यह शीर्षक को ही नियंत्रित न करे। –

5

मैं शीर्षक केंद्र स्थापित करने का एक और रास्ता मिल गया, बस setContentView (R.layout.new) के तहत कोड डाल ...

((TextView)((FrameLayout)((LinearLayout)((ViewGroup) getWindow().getDecorView()).getChildAt(0)).getChildAt(0)).getChildAt(0)).setGravity(Gravity.CENTER); 

आशा इस मदद करता है। धन्यवाद!

+0

@ ef2011, कोई समस्या नहीं! – exception01

+14

इस के साथ एकमात्र समस्या यह है कि यह विंडो सामग्री की संरचना के तरीके के बारे में अनियंत्रित पहलुओं पर निर्भर करता है। Google मूल रूप से अनियंत्रित डेटा संरचनाओं को बदलने के लिए जाना जाता है, और इस बात की कोई गारंटी नहीं है कि यह विशेष तकनीक भविष्य में काम करेगी। –

+3

ठीक है, Google बेकार (ओएस डिजाइन पर) और यह मेरे लिए काम नहीं करता है। लेकिन यह करता है: ((TextView) ((LinearLayout) ((ViewGroup) getWindow()। GetDecorView()) getChildAt (0))। GetChildAt (0))। SetGravity (Gravity.CENTER); – HardCoder

21

यह ठीक काम करेंगे ..

TextView customView = (TextView) 
LayoutInflater.from(this).inflate(R.layout.actionbar_custom_title_view_centered, 
    null); 

ActionBar.LayoutParams params = new ActionBar.LayoutParams(
    ActionBar.LayoutParams.MATCH_PARENT, 
    ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER); 

customView.setText("Some centered text"); 
getSupportActionBar().setCustomView(customView, params); 
+0

यह उत्तर सही है – JesperB

+0

आप कमाल हैं! साझा करने के लिए धन्यवाद। – Kid24

+0

यह केवल एपीआई 11+ के लिए काम करता है। अधिकांश फोन अभी भी <2.3.4 हैं। – Chloe

1
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // must come before setContentView 
    setContentView(R.layout.activity_calculator); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 

लेआउट/title_bar.xml में अपने लेआउट रखो

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:text="Custom Centered Title" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:textColor="@android:color/black" 
    android:gravity="center" 
    /> 

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/2.2_r1.1/com/example/android/apis/app/CustomTitle.java

+0

मैं minSdk 14. का उपयोग कर रहा हूं फिर भी यह मेरे लिए काम नहीं कर रहा है। मेरे प्रश्न देखें: http://stackoverflow.com/questions/17605282/center-title-of-activity-in-android-action-bar –