How to Hide the Title Bar for an Activity in XML with an Existing Custom Theme

How to Hide the Title Bar for an Activity in XML with an Existing Custom Theme

22 May 2024 Stephan Petzl Leave a comment Tech-Help

When developing Android applications, you may encounter situations where you want to hide the title bar for certain activities. This can be challenging if you have applied a custom style to all your activities. In this article, we’ll explore several solutions to achieve this without affecting your entire application’s theme.

Solution 1: Modify Your onCreate Method

You can programmatically hide the title bar by adding the following code to the onCreate method of your activity:

// Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

// Set content view AFTER the above sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here);

This approach ensures that the title bar is removed before the activity’s layout is set.

Solution 2: Modify AndroidManifest.xml

To hide the title bar by modifying the AndroidManifest.xml, you can set the theme for the specific activity:

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
</activity>

If you do not need a fullscreen activity, you can use:

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

Note: If your activity extends AppCompatActivity, you might need to switch to Activity.

Solution 3: Customize Your Styles

A more flexible approach is to create a custom style that inherits from your general style but disables the title bar:

<style name="generalnotitle" parent="general">
    <item name="android:windowNoTitle">true</item>
</style>

Apply this style to the specific activities in your AndroidManifest.xml:

<activity android:theme="@style/generalnotitle">

Advanced Customization

If you want to ensure compatibility across different Android versions, you can define multiple styles for different API levels:

For API Level 11 and Above

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

For API Level 14 and Above

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

Then, apply the appropriate theme in your AndroidManifest.xml:

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

Conclusion

Choosing the right method to hide the title bar depends on your specific requirements and the structure of your application. By using the approaches outlined above, you can effectively manage the visibility of the title bar in your Android activities.

For further reading on related topics, you might find these articles useful:

If you’re looking to streamline your mobile app testing process, consider using Repeato, a no-code test automation tool for iOS and Android. Repeato leverages computer vision and AI to create, run, and maintain automated tests quickly and efficiently. This allows developers to focus on building great products while enabling non-technical team members to handle test automation effectively. Learn more about how Repeato can benefit your development workflow on our documentation page.

Like this article? there’s more where that came from!