2010-11-27 73 views
1

我在我的android应用程序中使用带有背景图像的标题栏。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> 

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

感谢您的想法 罗恩

+0

我想我应该将图像从后台到前台移动。也许这会避免文本的问题。 – Ron 2010-11-27 00:55:34

回答

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

他希望标题栏不是文本,所以setTitle(“”);在你的活动 – schwiz 2010-11-27 03:35:11

+0

setTitle(“”)的作品,但显然标签是由系统加载,并显示在setTitle(“”)隐藏它之前的一个短暂的时刻。 – Ron 2010-11-27 14:42:17

+0

实际上,从应用程序标题栏中正确删除文本的唯一方法是在清单中将“app_name”设置为“”... – Ron 2010-11-28 03:17:00

1

我不知道,但你也可以尝试无标签清单中声明你的活动。

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

试图设置一个空的自定义标题栏有一个空的布局。

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

幸运的方式过于简单(我猜你有你的标题自定义布局)

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

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

就是这样!希望这可以帮助!

1

给你的清单

<application android:label="bla bla" 
       android:icon="@drawable/bla bla" 
      ---> android:theme="@android:style/Theme.NoTitleBar"> 
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级别。

我知道这已经过去了几年......但发布给其他遇到此问题的人。

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

清单档案中的作品加入这个..

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"/> 
0
android:label="" 

添加此体现