Android Custom TitleBar - скрыть текст - PullRequest
1 голос
/ 27 ноября 2010

Я использую заголовок с фоновым изображением в моем приложении для 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>

Manifest:

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

Пока это работает довольно хорошо.

Единственное, что я хотел бы сейчас сделать - это скрыть текст на заголовке ...

Я пытался:

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

но без удачи. Есть ли способ установить прозрачность или другое свойство, которое позволило бы мне видеть фоновое изображение, но не текст?

спасибо за ваши мысли Рон

Ответы [ 9 ]

3 голосов
/ 08 сентября 2012

Если вы работаете с 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 голосов
/ 27 ноября 2010

Вы можете сделать это на Java, а не на ресурсе xml, поскольку TextView в строке заголовка определяется программно некоторыми строками в исходном коде Java 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);
}
1 голос
/ 10 мая 2012

Добавьте это к своему манифесту

<application  android:label="bla bla"
              android:icon="@drawable/bla bla"
            --->  android:theme="@android:style/Theme.NoTitleBar">
1 голос
/ 27 ноября 2010

Я не уверен, но вы также можете попытаться объявить свою деятельность без метки в манифесте.

<activity android:name="...">
0 голосов
/ 17 марта 2016
android:label=""

добавить это в манифест

0 голосов
/ 28 августа 2012
android:theme="@android:style/Theme.NoTitleBar"> 

добавление этого в ваш файл манифеста работает ..

0 голосов
/ 28 августа 2012

Установите свою тему на пользовательскую тему для действия.Тема будет выглядеть так:

<?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.Если оставить это поле пустым, <item name="android:displayOptions"></item>, тогда текст и значок исчезнут вместе.

ПРИМЕЧАНИЕ: Я знаю, что это будет работать для 3.0 (API 11) и вышеЯ не уверен, будет ли это работать для более низких уровней API.

Я знаю, что это годы ... но публикую сообщения для тех, кто сталкивается с этой проблемой.

0 голосов
/ 26 сентября 2011

К счастью, путь слишком прост (я думаю, у вас есть собственный макет для вашего заголовка)

Если вы не знаете, как это сделать, посмотрите: Как создать собственное окноЗаголовок в Android

Скрытие текста заголовка по умолчанию - одна строка кода.Просто напишите setTitle(""); внутри onCreate().

Вот и все!Надеюсь, это поможет!

0 голосов
/ 09 августа 2011

Попробуйте установить пустую пользовательскую строку заголовка с пустым макетом.

Boolean customTitle = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);    
    setContentView(R.layout.listviewoffers);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebarlayout);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...