Search code examples
androidtitlebarcustom-adapter

Android: Title not shown in Custom Title Bar with Custom ListAdapter View


I have created a custom title bar with the following.

myapptitle.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/myTitle"
  android:text="@string/app_name"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:textColor="@color/titletextcolor"
  android:textSize="14sp"
  android:layout_gravity="top"
   />

themes.xml

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

manifext.xml

    <application
        android:label="@string/app_name"
        android:theme="@style/customTheme" >
.....

I have created a customList adapater and a layout for that like the one below.

<?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="wrap_content"
     android:orientation="vertical" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="22dip"
        android:layout_height="22dip"
        android:layout_marginLeft="4dip"
        android:layout_marginRight="10dip"
        android:layout_marginTop="4dip"
        android:contentDescription="@string/app_msg_title"
        android:src="@drawable/logo_small" >
    </ImageView>

    <TextView
        android:id="@+id/msgDate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:textSize="14sp" 
        />

    <TextView
        android:id="@+id/msgTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:textSize="14sp" />

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="12sp" >
    </TextView>

</LinearLayout>

In my list activity I have given the below code on onCreate method.

  requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
   getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.myapptitle);

But somehow while running the application I'm getting the title bar without any text in it at all. In my strings.xml for app_name i have My Notifications as text.

Appreciate all your time and help.

Edited Styles.xml

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

Solution

  • Change your style.xml like below:

        <resources>
           <style name="CustomWindowTitleBarBG">
                  <item name="android:background">#323331</item>
          </style>
    
          <style name="TitleBarTheme" parent="android:Theme">
                 <item name="android:windowTitleSize">35dip</item>
    <item name="android:windowTitleBackgroundStyle">           @style/CustomWindowTitleBarBG</item>
          </style>
    </resources>
    

    Then

    In manifest file, use TitleBarTheme in application tag and for activity use like below:

    android:theme="@android:style/Theme.NoTitleBar"
    

    and in activity class use your code which is:

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
       getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                    R.layout.myapptitle);