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

添加此體現