Android custom TitleBar - hide text

2019-07-28 19:17发布

问题:

I am using a titlebar with a background image in my android app.

values/custom_styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TitlebarBackgroundStyle">
        <item name="android:background">@drawable/titlebar</item>
    </style>
    <style name="Theme.MyCustomTheme" parent="android:Theme"> 
        <item name="android:windowTitleBackgroundStyle">@style/TitlebarBackgroundStyle</item>
        <item name="android:windowTitleSize">45dp</item>
    </style>
</resources>

layout/titlebar.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="45dip"
 android:gravity="center_vertical">
 <ImageView
  android:id="@+id/header"
  android:src="@drawable/titlebar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"/>
</LinearLayout>

Manifest:

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

This works pretty well so far.

The only thing I'd like to do now is to hide the text on the titlebar ...

I tried:

<item name="android:textSize">0dp</item>

but with no luck. Is there any way to set the transparency or some other property that would allow me to see the background image but not the text?

thanks for your thoughts Ron

回答1:

If you are working on API level 11 or above than do this in your activity

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);

Or you can do this by applying custom style to your activity like

  <style name="CustomWindowTitle" parent="android:TextAppearance.WindowTitle">
           <item name="android:visibility">gone</item>     
  </style>    

  <style name="MainTheme" parent="@android:Theme">    
     <item name="android:windowTitleStyle">
       @style/CustomWindowTitleText</item>   
 </style>

And then add it to your activity like

 <activity
            ......
 android:theme="@style/MainTheme"/>


回答2:

You can do it in Java, not resource xml, since the TextView on the title bar is determined programmatically by some lines in the Android Java source code.

You can hide the title bar's TextView in this way :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
    root = (LinearLayout) decorView.getChildAt(0);
    FrameLayout titleContainer = (FrameLayout) root.getChildAt(0);
    TextView title = (TextView) titleContainer.getChildAt(0);
    title.setVisibility(View.GONE);
}


回答3:

I'm not sure, but you can also try to declare your activities without label in manifest.

<activity android:name="...">


回答4:

Add this to your manifest

<application  android:label="bla bla"
              android:icon="@drawable/bla bla"
            --->  android:theme="@android:style/Theme.NoTitleBar">


回答5:

Try to set an empty custom titlebar with an empty layout.

Boolean customTitle = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);    
    setContentView(R.layout.listviewoffers);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebarlayout);


回答6:

Fortunately the way is too simple (I guess you do have a custom layout for your title)

If you don't know to do how please take a look: How to Create Custom Window Title in Android

Hiding the default title text is one line of code. Just write setTitle(""); inside onCreate().

That's it! Hope this helps!



回答7:

Set your theme to a custom theme for the activity. The theme would look like this:

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

    <style name="Theme.Black.OptionalActionBar" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="android:windowNoTitle">false</item>
        <item name="android:windowActionBar">true</item>
        <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
    </style>

    <style name="MyActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:displayOptions">showHome</item>
    </style>

    <style name="OptionalVisibility">
        <item name="android:visibility">invisible</item>
        <item name="android:height">1dp</item>
    </style>

</resources>

The ActionBarStyle overrides the behavior of the action bar. Notice I set the style to the holo actionbar and then change the displayOptions to showHome. This will only show the home icon. You can also set it to showTitle which will only show the text. Or both showHome|showTitle. If you leave it blank, <item name="android:displayOptions"></item> then the text and icon will go away all together.

NOTE: I know this will work for 3.0 (api 11) and above...I am not certain if it will work for lower API levels.

I know this is years old...but posting for others who encounter this problem.



回答8:

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

adding this in your manifest file works..



回答9:

android:label=""

add this to manifest