2010-01-18 61 views
26

我創建自定義標題的活動禁用標準的一個和自己管理一切。我想知道是否可以用我的需求替換/主題標準標題。自定義標題與圖像

我可以通過更改windowXYZStyle項目來自定義大小,背景圖像和文本。

我唯一無法找到的東西 - 我如何添加圖像而不是文本。 我試過requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) 並分配自定義佈局 - 但它似乎不工作。

編輯:這裏是測試建議的報告,代碼在下面 - 結果 - 圖像視圖沒有顯示出來。

活動

public class SettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 

    } 
} 

XML : 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="26dip" 
    android:paddingLeft="5dip" 
    android:background="@drawable/titlebar_bg" 
    android:layout_gravity="left|center" 
> 
    <ImageView 
     android:id="@+id/logo" 
     android:src="@drawable/title_logo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

回答

35

可以設置自己的自定義標題佈局,但是執行順序很重要。您必須按以下順序執行操作:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.my_layout); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title); 

此外,您可能需要增加標題的大小;如果你不這樣做,那麼你的自定義佈局的底部可能只是被你的Activity所掩蓋。您可以通過添加指定標題大小的主題來更改大小。這將進入一個值的XML文件:

<resources> 
    <style name="LargeTitleTheme"> 
     <item name="android:windowTitleSize">40dip</item> 
    </style> 
</resources> 

然後,你需要設置主題爲您的活動(或應用程序,如果你想整個應用程序有這個自定義標題欄)在AndroidManifest.xml:

<activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" /> 
+0

嘿丹尼爾,謝謝你的回覆,我在提問之前就這樣做了。已經很晚了 - 所以我可能會搞砸了。你試過這個嗎?在擴展PreferencesActivity的活動中嘗試一下,my_custom_title上有一個自定義的背景和徽標(對於圖像視圖) - 對我來說,它確實分配了自定義標題和文本視圖 - my_custom_title中的圖像視圖 - 沒有。同樣適用於背景 - 這可以通過向LargeTitleTheme添加更多項目來解決。 – 2010-01-18 16:46:54

+0

我已經完成了上面概述的內容(我從源代碼中獲取了示例代碼)。但是,我從來沒有在PreferencesActivity上試過它;也許還有一些你必須做的,以覆蓋標題欄。我不知道我現在明白你的問題是什麼;重申? – 2010-01-18 17:07:53

+0

問題在於圖像視圖未顯示在自定義標題中。而我需要拍一個帶有徽標的圖像而不是文字。 – 2010-01-18 17:24:58

6

你總是可以使用:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

然後創建活動的意見裏面你自己的標題欄。

+0

是啊,這正是我現在做的事情。我認爲有一種主題標準的方法。 例如標題欄中的優先活動。爲了標題欄的緣故,我真的不想搞亂自定義佈局。 – 2010-01-18 16:20:57

+2

我開始認爲這可能是最好的選擇。首先,它會避免應用程序打開時標題欄閃爍,以及我需要用來從包含圖層刪除邊距的黑客解決方法,以便在標題欄周圍看不到灰色邊框。 – Casebash 2010-04-28 05:14:14

1

您確定需要在標題中使用圖片,而不是將其作爲背景圖片的一部分並將標題留空嗎?使用NinePatch圖片,我希望你能夠獲得一個無論設備如何都可以看起來很好的結果?

1

我用下面的代碼,以適應我的自定義標題屏幕

<ImageView 
    android:id="@+id/header_img" 
    android:src="@drawable/header_img" 
    android:layout_width="700dip" 
    android:layout_height="70dip" />