1

我在我的 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>

布局/标题栏.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>

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

谢谢你的想法罗恩

4

9 回答 9

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"/>
于 2012-09-08T13:55:32.947 回答
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);
}
于 2010-11-27T01:36:48.667 回答
1

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

<activity android:name="...">
于 2010-11-27T02:15:29.820 回答
1

将此添加到您的清单中

<application  android:label="bla bla"
              android:icon="@drawable/bla bla"
            --->  android:theme="@android:style/Theme.NoTitleBar">
于 2012-05-10T13:19:05.120 回答
0

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

如果你不知道怎么做,请看:如何在 Android 中创建自定义窗口标题

隐藏默认标题文本是一行代码。只写setTitle("");里面onCreate()

而已!希望这可以帮助!

于 2011-09-26T16:33:57.020 回答
0
android:theme="@android:style/Theme.NoTitleBar"> 

在您的清单文件中添加它是有效的..

于 2012-08-27T23:47:05.943 回答
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 覆盖操作栏的行为。请注意,我将样式设置为全息操作栏,然后将其更改displayOptionsshowHome. 这只会显示主页图标。您也可以将其设置为showTitle仅显示文本。或者两者兼而有之showHome|showTitle。如果将其留空,<item name="android:displayOptions"></item>则文本和图标将一起消失。

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

我知道这已经有多年历史了……但是为遇到此问题的其他人发帖。

于 2012-08-27T23:39:20.900 回答
0

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

Boolean customTitle = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);    
    setContentView(R.layout.listviewoffers);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebarlayout);
于 2011-08-09T13:12:12.023 回答
0
android:label=""

将此添加到清单

于 2016-03-17T16:00:11.303 回答