Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom title with image

i'm creating custom title for activity by disabling standard one and managing everything myself. I wonder if it's possible to replace/theme standart title to my needs.

I can customize size, background image, and text via themes by changing windowXYZStyle items.

The only thing i couldn't find - how i can add image instead of text. I've tried requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) and assign custom layout - but it doesn't seems to work.

EDIT : Here is a report of testing suggestions, code is below - result - image view is not showing up.

Activity

public class SettingsActivity extends PreferenceActivity  {      @Override     protected void onCreate(Bundle savedInstanceState) {         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);         super.onCreate(savedInstanceState);         addPreferencesFromResource(R.xml.settings);      } }  XML :  <LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/title"     android:layout_width="fill_parent"     android:layout_height="26dip"     android:paddingLeft="5dip"     android:background="@drawable/titlebar_bg"     android:layout_gravity="left|center" >     <ImageView         android:id="@+id/logo"         android:src="@drawable/title_logo"         android:layout_width="wrap_content"         android:layout_height="wrap_content" />  </LinearLayout> 
like image 280
Alex Volovoy Avatar asked Jan 18 '10 15:01

Alex Volovoy


2 Answers

It's possible to set your own custom title layout, however the order of execution matters. You must do things in this order:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.my_layout); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title); 

Additionally, you may need to increase the size of the title; if you don't, then the bottom of your custom layout may just be covered up by your Activity. You can change the size by adding a theme that specifies the title's size. This would go into a values XML file:

<resources>     <style name="LargeTitleTheme">         <item name="android:windowTitleSize">40dip</item>     </style> </resources> 

Then you'd need to set the theme for your Activity (or Application, if you want the entire application to have this custom title bar) in AndroidManifest.xml:

<activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" /> 
like image 76
Dan Lew Avatar answered Oct 10 '22 06:10

Dan Lew


You could always use:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

And then create your own title bar inside your Activity's View.

like image 31
Dave Webb Avatar answered Oct 10 '22 08:10

Dave Webb