【问题标题】:Android custom TitleBar - hide textAndroid 自定义 TitleBar - 隐藏文字
【发布时间】:2010-11-27 00:35:16
【问题描述】:

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

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

感谢您的意见 罗恩

【问题讨论】:

  • 我在想我应该将图像从背景移动到前景。也许这样可以避免文本的问题。

标签: android background imageview titlebar


【解决方案1】:

如果您正在使用 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"/>

【讨论】:

  • 这个答案解决了我从扩展另一个活动标签的对话框主题活动中删除标题的问题。谢谢
【解决方案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);
}

【讨论】:

  • 他想要标题栏而不是文本所以 setTitle("");在你的活动中
  • setTitle("") 有效,但显然标签是由系统加载的,并在 setTitle("") 隐藏之前显示片刻。
  • 其实,要从应用的标题栏中正确删除文本的唯一方法是在清单中将“app_name”设置为“”...
  • 讨厌的副作用 - 应用列表中的应用名称也是“” - 不好
  • 在清单中的活动中添加一个空标签...这会隐藏标题文本
【解决方案3】:

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

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

【讨论】:

  • 我确实做到了。这不会阻止显示标题(可通过 setText() 编辑)...
  • 好吧,另一个建议,如果你给一个标题,但一个空的怎么办?!
  • 查看我对上一个答案的最后评论:实际上,从应用程序的标题栏中正确删除文本的唯一方法是在清单中将“app_name”设置为“”...
  • 最好的解决方案是使用空标签声明活动以隐藏标题文本...
  • 我的意思也是空标签。现在我们知道了,它有效:) 恭喜
【解决方案4】:

将此添加到您的清单中

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

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

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

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

      【讨论】:

        【解决方案7】:

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

        <?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 会覆盖操作栏的行为。请注意,我将样式设置为全息操作栏,然后将 displayOptions 更改为 showHome。这只会显示主页图标。您也可以将其设置为showTitle,它只会显示文本。或者两者都showHome|showTitle。如果您将其留空,&lt;item name="android:displayOptions"&gt;&lt;/item&gt;,那么文本和图标将一起消失。

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

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

        【讨论】:

          【解决方案8】:
          android:theme="@android:style/Theme.NoTitleBar"> 
          

          在你的清单文件中添加这个是可行的..

          【讨论】:

            【解决方案9】:
            android:label=""
            

            将此添加到清单

            【讨论】:

              猜你喜欢
              • 2012-07-05
              • 2014-10-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-08-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多