向操作栏添加下拉菜单
详细说明
private void InitializeActionBar()
{
ActionBar.NavigationMode = ActionBarNavigationMode.List;
ActionBar.SetListNavigationCallbacks(
new NavigationSpinnerAdapter(this),
new NavigationListener());
}
public class NavigationSpinnerAdapter : BaseAdapter
{
private List _spinnerItems;
private LayoutInflater _layoutInflater;
public NavigationSpinnerAdapter(Context context)
{
_spinnerItems = new List();
// Create java strings for this sample.
// This saves a bit on JNI handles.
_spinnerItems.Add(new Java.Lang.String("Sample item 1"));
_spinnerItems.Add(new Java.Lang.String("Sample item 2"));
_spinnerItems.Add(new Java.Lang.String("Sample item 3"));
// Retrieve the layout inflater from the provided context
_layoutInflater = LayoutInflater.FromContext(context);
}
public override Object GetItem(int position)
{
return _spinnerItems[position];
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var view = convertView;
// Try to reuse views as much as possible.
// It is alot faster than inflating new views all the time
// and it saves quite a bit on memory usage aswell.
if (view == null)
{
// inflate a new layout for the view.
view = _layoutInflater.Inflate(Resource.Layout.SpinnerItem, parent, false);
}
var textView = view.FindViewById(Resource.Id.DisplayTextLabel);
textView.Text = _spinnerItems[position].ToString();
return view;
}
public override int Count
{
get { return _spinnerItems.Count; }
}
}
public class NavigationListener: Java.Lang.Object, ActionBar.IOnNavigationListener
{
public bool OnNavigationItemSelected(int itemPosition, long itemId)
{
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//catch clicked item
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
return false;
}
}
android:actionViewClass="android.widget.SearchView"/>
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.ActionItems, menu);
var searchView = (SearchView)menu.FindItem(Resource.Id.menu_search).ActionView;
searchView.SearchClick += OnSearchClicked;
return true;
}