2010-01-18 43 views
26

Tôi đang tạo tiêu đề tùy chỉnh cho hoạt động bằng cách vô hiệu hóa tiêu chuẩn và tự quản lý mọi thứ. Tôi tự hỏi nếu nó có thể thay thế/tiêu đề standart chủ đề theo nhu cầu của tôi.Tiêu đề tùy chỉnh với hình ảnh

Tôi có thể tùy chỉnh kích thước, hình nền và văn bản qua các chủ đề bằng cách thay đổi các mục windowXYZStyle.

Điều duy nhất tôi không thể tìm thấy - cách tôi có thể thêm hình ảnh thay vì văn bản. Tôi đã thử requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) và chỉ định bố cục tùy chỉnh - nhưng dường như không hoạt động.

EDIT: Đây là báo cáo về đề xuất thử nghiệm, mã bên dưới - kết quả - chế độ xem hình ảnh không hiển thị.

Hoạt động

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> 

Trả lời

35

Có thể đặt bố cục tiêu đề tùy chỉnh của riêng bạn, tuy nhiên thứ tự của các vấn đề thực thi. Bạn phải làm những việc theo thứ tự sau:

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

Ngoài ra, bạn có thể cần phải tăng kích thước của tiêu đề; nếu bạn không làm như vậy, thì cuối cùng bố cục tùy chỉnh của bạn có thể chỉ được bao phủ bởi Hoạt động của bạn. Bạn có thể thay đổi kích thước bằng cách thêm chủ đề chỉ định kích thước của tiêu đề. Điều này sẽ đi vào một tập tin XML giá trị:

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

Sau đó, bạn sẽ cần phải thiết lập các chủ đề cho hoạt động của bạn (hoặc ứng dụng, nếu bạn muốn toàn bộ ứng dụng để có thanh tiêu đề phong tục này) trong AndroidManifest.xml:

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

Hey Daniel, cảm ơn bạn đã trả lời, tôi đã làm điều đó trước khi đặt câu hỏi. Đã muộn - vì vậy tôi có thể làm rối tung điều gì đó. Bạn đã thử cái này chưa? Hãy thử nó trong hoạt động mở rộng PreferencesActivity và my_custom_title có một nền tùy chỉnh và logo (như hình ảnh xem) trên nó - đối với tôi nó đã gán tiêu đề tùy chỉnh và xem văn bản đã hiển thị - xem hình ảnh trong my_custom_title - không. Tương tự cho nền - có thể được giải quyết bằng cách thêm một mục nữa vào LargeTitleTheme. –

+0

Tôi đã thực hiện chính xác những gì tôi đã nêu ở trên (tôi lấy mã ví dụ từ nguồn của mình).Tuy nhiên, tôi chưa bao giờ thử nó trên một PreferencesActivity trước đây; có lẽ có một số chi tiết mà bạn phải làm để ghi đè thanh tiêu đề đó. Tôi không chắc tôi hiểu vấn đề của bạn là gì; trình bày lại? –

+0

vấn đề là chế độ xem hình ảnh không hiển thị trong tiêu đề tùy chỉnh. Và tôi cần tát một hình ảnh với logo trên đó thay vì văn bản. –

6

Bạn luôn có thể sử dụng:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

Và sau đó tạo ra thanh tiêu đề của riêng bạn bên Xem hoạt động của bạn.

+0

Vâng đó chính xác những gì tôi đang làm bây giờ. Tôi đã nghĩ rằng có một cách để tiêu chuẩn chủ đề. Ví dụ: thanh tiêu đề trong hoạt động ưu tiên. Tôi thực sự không muốn gây rối với bố trí tùy chỉnh chỉ vì lợi ích của thanh tiêu đề. –

+2

Tôi bắt đầu nghĩ rằng đây có thể là lựa chọn tốt nhất. Để bắt đầu, nó sẽ tránh thanh tiêu đề nhấp nháy khi ứng dụng mở cũng như workaround hackish tôi cần sử dụng để loại bỏ các lề khỏi lớp chứa, vì vậy mà tôi sẽ không thấy một đường viền màu xám xung quanh thanh tiêu đề. – Casebash

1

Bạn có chắc chắn rằng bạn cần sử dụng hình ảnh trong tiêu đề thay vì chỉ kết hợp nó như một phần của hình nền và để trống tiêu đề? Sử dụng hình ảnh NinePatch Tôi hy vọng rằng bạn sẽ có thể đạt được kết quả trông đẹp trên bất kể thiết bị?

1

Tôi đã sử dụng đoạn mã sau để phù hợp với tiêu đề tùy chỉnh của tôi vào màn hình

<ImageView 
    android:id="@+id/header_img" 
    android:src="@drawable/header_img" 
    android:layout_width="700dip" 
    android:layout_height="70dip" /> 
Các vấn đề liên quan