2017-08-05 53 views
0

menu_catalog.xmlAndroid的微调工具栏中显示的文本,但没有图片

<?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/catalogactivityfilter" 
     app:showAsAction="always" 
     android:icon="@mipmap/filter" 
     android:title="Sort" 
     app:actionViewClass="android.widget.Spinner" 
     /> 
</menu> 

在我的片段

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     getActivity().getMenuInflater().inflate(R.menu.menu_catalog, menu); 
     setUpFilter(menu); 


    } 

    public void setUpFilter(Menu menu){ 
     MenuItem item = menu.findItem(R.id.catalogactivityfilter); 
     Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); 
     ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), 
       R.array.array_sorting_options, android.R.layout.simple_spinner_item); 

     // Specify dropdown layout style - simple list view with 1 item per line 
     adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
     spinner.setAdapter(adapter); 
    } 

在我toolbar,我收到spinner,但它不显示当我打开应用程序时,图像显示选项。我想在应用程序打开时设置图像catalogactivityfilter

回答

0

你需要创建一个扩展ArrayAdapter定制的适配器和覆盖getViewgetDropDownView

这里是一个自定义适配器我做了一个使用setCompoundDrawablesWithIntrinsicBounds设置在TextView中可绘制。 你可以简单地使用这样的:

spinner.setAdapter(new CustomSpinnerAdapter(this)); 

CustomSpinnerAdapter.java

public class CustomSpinnerAdapter extends ArrayAdapter<ItemsEnum> { 
    private Context mContext; 
    private LayoutInflater mLayoutInflater; 
    public CustomSpinnerAdapter(Context context) { 
     super(context, 0, ItemsEnum.values()); 
     mContext = context; 
     mLayoutInflater = (LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, @NonNull ViewGroup parent) { 
     CheckedTextView checkedTextView= (CheckedTextView) convertView; 

     if (checkedTextView== null) { 
      checkedTextView = (CheckedTextView) mLayoutInflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); 
     } 
     ItemsEnum item = getItem(position); 
     checkedTextView.setText(item.getTitle()); 
     checkedTextView.setCompoundDrawablesWithIntrinsicBounds(item.getResId(), 0, 0, 0); 

     return checkedTextView; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) { 
     CheckedTextView checkedTextView = (CheckedTextView) convertView; 

     if (checkedTextView == null) { 
      checkedTextView = (CheckedTextView) mLayoutInflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); 
     } 
     ItemsEnum item = getItem(position); 
     checkedTextView.setText(item.getTitle()); 
     checkedTextView.setCompoundDrawablesWithIntrinsicBounds(item.getResId(), 0, 0, 0); 

     return checkedTextView; 
    } 
} 

ItemsEnum.java

enum ItemsEnum { 
OPTION1("Option 1", R.mipmap.ic_launcher), 
OPTION2("Options 2", R.mipmap.ic_launcher_round); 

private String title; 
private Integer resId; 

ItemsEnum(String title, Integer resId){ 
    this.title = title; 
    this.resId = resId; 
} 

public Integer getResId() { 
    return resId; 
} 

public String getTitle() { 
    return title; 
} 
} 
相关问题