Android自定义标题栏 - 隐藏文字

时间:2010-11-27 00:35:16

标签: android background imageview titlebar

我在我的Android应用程序中使用带有背景图像的标题栏。

值/ 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>

布局/ 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>

清单:

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

到目前为止效果非常好。

我现在唯一想做的就是隐藏标题栏上的文字......

我试过了:

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

但没有运气。有没有办法设置透明度或其他一些可以让我看到背景图片而不是文字的属性?

谢谢你的想法 罗恩

9 个答案:

答案 0 :(得分:3)

如果您正在使用API​​级别11或以上,请在活动中执行此操作

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

或者您可以通过将自定义样式应用于您的活动来实现此目的,例如

  <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>

然后将其添加到您的活动中,例如

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

答案 1 :(得分:2)

你可以用Java而不是资源xml来实现,因为标题栏上的TextView是由Android Java源代码中的某些行以编程方式确定的。

您可以通过以下方式隐藏标题栏的TextView:

@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);
}

答案 2 :(得分:1)

我不确定,但您也可以尝试在清单中声明没有标签的活动。

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

答案 3 :(得分:1)

将此添加到您的清单

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

答案 4 :(得分:0)

尝试使用空布局设置空的自定义标题栏。

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

答案 5 :(得分:0)

幸运的是,方式太简单了(我猜你的标题有自定义布局)

如果你不知道怎么做,请看看:How to Create Custom Window Title in Android

隐藏默认标题文本是一行代码。只需在setTitle("");内写onCreate()即可。

就是这样!希望这有帮助!

答案 6 :(得分:0)

将主题设置为活动的自定义主题。主题看起来像这样:

<?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>

ActionBarStyle会覆盖操作栏的行为。请注意,我将样式设置为holo操作栏,然后将displayOptions更改为showHome。这只会显示主页图标。您也可以将其设置为仅显示文字的showTitle。或者showHome|showTitle。如果您将其留空<item name="android:displayOptions"></item>,则文本和图标将一起消失。

注意:我知道这适用于3.0(api 11)及更高版本......我不确定它是否适用于较低的API级别。

我知道这已经有好几年了......但是为遇到这个问题的其他人发帖。

答案 7 :(得分:0)

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

在清单文件中添加此内容..

答案 8 :(得分:0)

android:label=""

将此添加到清单