2011-12-22 19 views
6

Trên ứng dụng Android của tôi, tôi tùy chỉnh ActionBar theo các mẹo từ android developer blog và các địa điểm khác. Tôi muốn có thể làm nổi bật một mục menu cụ thể trên ActionBar, ví dụ: với một màu nền khác vì nó đặc biệt áp dụng cho một đoạn hiện có thể nhìn thấy (mà thực sự đã thêm nó). Tuy nhiên tôi đã không tìm thấy bất kỳ dấu hiệu cho thấy điều này có thể được thực hiện cũng không có tôi quản lý để làm như vậy bản thân mình được nêu ra. Có thể không? Nếu thế thì sao?Giao diện/kiểu dáng khác nhau cho mục menu cụ thể trên ActionBar

+0

Bạn có chắc chắn sẽ không dễ sử dụng biểu tượng hơi khác? Hoặc các thay đổi nền trước khác mà bạn có thể thực hiện thông qua chế độ xem hành động tăng cao tùy chỉnh của riêng bạn hoặc 'ActionProvider'? – CommonsWare

+0

hiện tại đây là văn bản và biểu tượng sẽ khó hiểu hơn. Xét về chế độ xem hành động tùy chỉnh hoặc ActionProvider ... Tôi sẽ phải xem xét điều đó. –

+0

Bạn có thể thay đổi màu nền trước của văn bản, ít nhất là nếu bạn đi đến chế độ xem hành động/'ActionProvider'. Thật không may, Android không hỗ trợ thẻ '' ... :-) – CommonsWare

Trả lời

12

Vì vậy, tôi đã làm việc này ngay bây giờ với một chút mẹo vặt. Ở đây sẽ là đoạn mã

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 

    menuItemCreateCart = menu.findItem(R.id.menuItemCreateCart); 
    if (menuItemCreateCart == null) { 
     menuItemCreateCart = menu.add(0, R.id.menuItemCreateCart, 0, R.string.Create); 
    } 

    TextView tv = new TextView(getActivity()); 
    tv.setText(R.string.Create); 
    tv.setTextColor(getResources().getColor(R.color.green)); 
    tv.setBackgroundColor(getResources().getColor(R.color.lightBlue)); 
    tv.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        createCart(); 
       } 
      } 
    ); 
    menuItemCreateCart.setActionView(tv); 

Gotcha chính là OnClickListener phải được đặt trên quan điểm cho rằng bạn thiết lập như xem hành động và không phải là mục trình đơn cho nó để làm việc. Bằng cách này bạn có thể làm bất cứ điều gì bạn thích.

Cũng lưu ý rằng bạn KHÔNG thể sử dụng getActionView để truy xuất chế độ xem được đặt ban đầu với tiêu đề vì nó sẽ trả về giá trị rỗng. Dường như có nhiều chế độ xem thay thế hơn chế độ xem thực tế cho các mục menu mặc định ..

+0

Đã làm việc cho tôi :) – Shivansh

Các vấn đề liên quan