簡體   English   中英

onCreateOptionsMenu 始終顯示為帶有我以編程方式創建的菜單的操作

[英]onCreateOptionsMenu showing alwasy as action with a menu that i have created programatically

以下是我如何以編程方式創建菜單


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


 menu.add(0, 0, 0, new SetUpClass().menuInitializer(
     Objects.requireNonNull(ContextCompat.getDrawable(requireActivity(),R.drawable.ic_cart)),
                getResources().getString(R.string.cart)));

}

下面是我在 SetUpClass 中的 menuInitializer 方法


public class SetUpClass {

public CharSequence menuInitializer(Drawable drawable, String title) {

        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        SpannableString spannableString = new SpannableString("    " + title);
        ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM);
        spannableString.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        return spannableString;
    }

}

如何使以編程方式創建的菜單始終顯示為操作,例如使用 xml 菜單時,如下所示

app:showAsAction="always"

使用MenuItem.SHOW_AS_ACTION_ALWAYS將菜單項設置為始終可見

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


MenuItem menuItem =  menu.add(0, 0, 0, new SetUpClass().menuInitializer(
     Objects.requireNonNull(ContextCompat.getDrawable(requireActivity(),R.drawable.ic_cart)),
                getResources().getString(R.string.cart)));
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM