2014-10-19 79 views
12

Tôi đang cố gắng sử dụng xác định biểu tượng tùy chỉnh trong Thanh công cụ hỗ trợ nhưng biểu tượng duy nhất được hiển thị là mũi tên trái ... Tôi đã cố gắng đặt nó trong bố cục và lập trình nhưng kết quả giống nhau .Biểu tượng tùy chỉnh trong thanh công cụ Android

Đây là Hoạt động của tôi

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    toolbar.setNavigationIcon(R.drawable.ic_launcher); 
    toolbar.setTitle(""); 
    setSupportActionBar(toolbar); 
} 

Và bố trí thanh công cụ của tôi

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/my_toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    app:navigationIcon="@drawable/ic_action_bar" 
    android:minHeight="@dimen/action_bar_size" 
    android:background="?attr/colorPrimary" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    /> 

Trả lời

20

Chỉ cần thử nó bản thân mình và vấn đề này có vẻ là bạn phải gọi setNavigationIcon sau setSupportActionBar(toolbar). Nếu không, nó sẽ chỉ hiển thị mũi tên như bạn đã mô tả.
Vì vậy, để khắc phục vấn đề này chỉ cần thay đổi mã như thế này:

//... 
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
setSupportActionBar(toolbar); 
toolbar.setNavigationIcon(R.drawable.ic_launcher); 
toolbar.setTitle(""); 

Lưu ý: Cùng đi cho thiết lập các tiêu đề, contentDescription vv Tôi không biết nếu điều này là một lỗi hoặc nếu nó được thiết kế, nhưng nó chắc chắn là lạ.

+0

Bạn nói đúng, nhờ :) – Antoine

+0

Tôi đã trải qua những hành vi tương tự. –

+8

Thay vì 'toolbar.setTitle (" ");', tôi thích sử dụng 'getSupportActionBar(). SetDisplayShowTitleEnabled (false);'. Tôi nghĩ rằng nó sạch hơn rất nhiều. – eoinzy

-1
ActionBar.setHomeAsUpIndicator(...); 

Cái này phù hợp với tôi.

0

Trong trường hợp bạn muốn biểu tượng menu thay đổi. (Có thể ai đó sẽ cần đến nó)

  1. Trong hoạt động của bạn

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        MenuInflater inflater = getMenuInflater(); 
        inflater.inflate(R.menu.menu_info, menu); 
        return true; 
    } 
    
  2. trong thư mục menu của bạn trong res. (Menu_info.xml)

    <?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto"> 
        <item 
         android:id="@+id/menu_info_action" 
         android:icon="@drawable/ic_info_icon" 
         android:title="@string/information" 
         app:showAsAction="ifRoom"/> 
    </menu> 
    
Các vấn đề liên quan