2013-06-08 3 views
0

Я не могу ни получить текст заголовка, ни настраиваемые стили заголовка. Я должен делать что-то очень неправильно, но я не могу понять, что (и если эти две проблемы связаны)Пользовательские стили и заголовки Android полностью игнорируются или дают ошибку

1) Что касается стилей (которые, как представляется, игнорировали) Я попытался это в valyes /styles.xml

<style name="MicWindowTitleBackground"> 
     <item name="android:background">@android:color/black</item> 
     <item name="android:padding">0px</item> 
    </style> 

    <style name="MicWindowTitleTextAppearance"> 
     <item name="android:textSize">20dip</item> 
     <item name="android:textStyle">bold|italic</item>   
    </style>  

    <style name="MicWindowTitle"> 
    <item name="android:textAppearance">@style/MicWindowTitleTextAppearance</item> 
    </style> 

    <style name="MicTheme" parent="AppTheme"> 
    <item name="android:windowTitleSize">44dip</item> 
    <item name="android:windowTitleBackgroundStyle">@style/MicWindowTitleBackground</item> 
    <item name="android:windowTitleStyle">@style/MicWindowTitle</item>  
    </style> 

И это в AndroidManifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@drawable/replace__logo__app_android" 
    android:label="@string/MicAppName" 
    android:theme="@style/MicTheme" 
    android:name="com.example.example.MicApp"  
    > 

2) В качестве альтернативы, я решил, что могу использовать FEATURE_CUSTOM_TITLE, который имел бы дополнительную выгоду, я мог бы изменить название, указанное в строке заголовка. Однако этот код ошибки с сообщением об ошибке, что я * не может совмещать FEATURE_CUSTOM_TITLE с другим названием функции * (который я не к моему знанию ...)

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

String customTitleStr = getIntent().getExtras().getString("Title"); 

Boolean customTitleSupported = this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

if ((customTitleSupported) && (customTitleStr != null)) { 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.override_titlebar); 
    final TextView myTitleText = (TextView) findViewById(R.id.myTitleText); 
    if (myTitleText != null) { 
     myTitleText.setText(customTitleStr); 
    }     
} 

ответ

0

Попробуйте следующим образом.

В вашем onCreate()

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.activity_main); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, 
       R.layout.titlebar); 

titlebar.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_vertical" 
    android:padding="1dp" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/logo" /> 

    <TextView 
     android:id="@+id/left_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:textColor="#fff" 
     android:paddingLeft="2dp"   
     android:text="@string/app_name" /> 

</LinearLayout> 

файл манифеста

<application 
     android:icon="@drawable/logo" 
     android:label="@string/app_name" 
     android:theme="@style/CustomTheme" > 
     ..... 
</application> 

Рез/значения/custom_title.xml

<resources> 
    <style name="CustomWindowTitleBackground"> 
     <item name="android:background">@drawable/title_shape</item> 
    </style> 

    <style name="CustomTheme" parent="android:Theme"> 
     <item name="android:windowTitleSize">33dip</item> 
     <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> 
    </style> 
</resources> 

Рез/рисуем/title_shape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <stroke 
     android:width="1dp" 
     android:color="#919090" /> 

    <gradient 
     android:angle="225" 
     android:endColor="#DD000000" 
     android:startColor="#02085E" /> 

</shape> 

Я надеюсь, что это поможет.

+0

У меня такая же ошибка относительно FEATURE_CUSTOM_TITLE. Может ли это быть проблемой SDK для целевой аудитории или аналогичной? Или что-то установленное в AndroidManifest.xml где-то, так как я получаю сообщение об ошибке? – Tom

+0

Это будет работать отлично. Установил ли 'android: theme =" @ style/CustomTheme "как дочерний тег' application' в файле манифеста? Также см. [Здесь] (http://stackoverflow.com/questions/5753223/create-custom-titlebar-in-android). – Gunaseelan

+0

Я должен быть слепым. То, как вы устанавливаете «андроид: тема», заключается в том, что не ** точно ** тот же метод, что и в моем первоначальном варианте? – Tom

Смежные вопросы