【发布时间】:2017-05-09 15:36:23
【问题描述】:
我的回收卡中有一个按钮,用于显示popupMenu
但是,每当用户单击此按钮时,popupMenu 不会出现。即使我在 menuOptionsButton.Click 操作中设置了一个断点,它也没有命中。
XML 中的图像按钮
<ImageButton
android:id="@+id/MoreSettings"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:src="@drawable/ic_more_black_24dp" />
RecyclerViewAdapter.cs
public class RecyclerAdapter : MvxRecyclerAdapter
{
private readonly FragmentActivity _activity;
public RecyclerAdapter(IMvxAndroidBindingContext bindingContext, FragmentActivity activity)
: base(bindingContext)
{
_activity = activity;
}
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
base.OnBindViewHolder(holder, position);
var view = holder.ItemView;
var menuOptionsButton = view.FindViewById<ImageButton>(Resource.Id.MoreSettings);
menuOptionsButton.Click += (s, e) =>
{
var popup = new PopupMenu(_activity, menuOptionsButton );
popup.MenuInflater.Inflate(Resource.Menu.menu,popup.Menu);
popup.Show();
};
}
}
如果我没有将popupMenu 放在点击动作中,那么recyclerview 中的每个项目都会显示popupMenu,但我希望有一个动作点击以显示popUpMenu。
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
base.OnBindViewHolder(holder, position);
var view = holder.ItemView;
var menuOptionsButton = view.FindViewById<ImageButton>(Resource.Id.MoreSettings);
var popup = new PopupMenu(_activity, menuOptionsButton );
popup.MenuInflater.Inflate(Resource.Menu.menu,popup.Menu);
popup.Show();
}
更新:
Activity.cs
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.AView, null);
HasOptionsMenu = true;
toolbar = ((MainView)Activity).SupportActionBar;
var recyclerView = view.FindViewById<MvxRecyclerView>(Resource.Id.ARecyclerView);
if (recyclerView != null)
{
recyclerView.HasFixedSize = true;
recyclerView.Adapter = new RecyclerAdapter((IMvxAndroidBindingContext)BindingContext, Activity);
var layoutManager = new LinearLayoutManager(Activity);
recyclerView.SetLayoutManager(layoutManager);
}
return view;
}
【问题讨论】:
-
id 不同
MoreOptionsvsMoreSettings -
抱歉,打错字了,我已修正并在我的问题中添加了其他信息。
-
您是否正在使用设置为
Sdk Assemblies Only或Sdk and user Assemblies的链接器进行构建? -
链接器属性是
none -
@hotspring 你有
RecyclerView.ViewHolder子类吗?你能添加你的RecyclerAdapter.OnCreateViewHolder覆盖吗....
标签: android xamarin android-recyclerview xamarin.android mvvmcross