2012-05-10 7 views
8

Tôi đã cố gắng để làm việc này trên thanh hành động nhưng từ những gì tôi có thể nhìn thấy tiêu đề là cơ bản một TextView nhưng tôi cần phải đặt một hình ảnh thay vì văn bản thuần túy. Tôi cố gắng để thiết lập nó vào themes.xml Phong cách như thế này:ActionBar tùy chỉnh tiêu đề như ImaveView thay vì TextView

<item name="android:actionBarStyle">@style/MyActionBar</item> 

Và sau đó tôi định nghĩa kiểu này

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@drawable/action_background</item> 
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item> 
</style> 

Tôi nghĩ rằng tôi có thể xác định nền cho danh hiệu nhưng ngay cả Nếu tôi làm không phải là những gì tôi muốn, hãy thử getActionBar(). setCustomView (layout); nhưng vui mừng rằng thanh tác vụ của tôi là null trước khi setContentView đang được gọi và tôi cần nó trong một lớp cơ sở.

PD. Tôi chỉ cần quan tâm đến HONEYCOMB và Cao hơn, vì vậy nếu bạn không đề nghị triển khai Sherlock hoặc Jonhanilson.

Trả lời

16

nếu bạn muốn có một hình ảnh, bạn có thể chỉ định các biểu tượng ứng dụng cùng với các biểu tượng (nó sẽ được sử dụng thay cho biểu tượng):

<application 
    android:icon="@drawable/ic_launcher" 
    android:logo="@drawable/logo" 
    android:label="@string/app_name" 
    android:name=".AppName" 
    > 

Bây giờ bạn có một hình ảnh tùy ý thay vì biểu tượng lanucher của bạn. Những gì bạn cần làm tiếp theo là loại bỏ văn bản. Trong phong cách của bạn làm như sau:

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="titleTextStyle">@style/NoTitleText</item> 
    <item name="android:titleTextStyle">@style/NoTitleText</item> 
    <item name="subtitleTextStyle">@style/NoTitleText</item> 
    <item name="android:subtitleTextStyle">@style/NoTitleText</item>  
</style> 

<style name="NoTitleText"> 
    <item name="android:textSize">0sp</item> 
    <item name="android:textColor">#00000000</item> 
</style> 

Bạn nên sử dụng cả hai item name="titleTextStyle"item name="android:titleTextStyle" nếu bạn sử dụng ActionBarSherlock nếu tôi nhớ tốt.

1

Override setContentView như thế này:

@Override 
public void setContentView(int resLayoutId) { 
    super.setContentView(resLayoutId); 
    // TODO Set your actionbar changes here 
} 

OR, bạn có thể làm điều này:

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@drawable/action_background</item> 
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item> 
    <item name="android:displayOptions">showCustom</item> 
    <item name="android:customNavigationLayout">@layout/custom_nav_layout</item> 
</style>