android - 动态更改弹出菜单项的字体大小 Android

标签 android menu textview android-menu popupmenu

我正在创建一个 android 应用程序,它有一个弹出菜单,当单击一个按钮时它会打开,我想动态地增加该弹出菜单中菜单项的文本大小(基于用户输入)。

任何人都可以帮助以编程方式做到这一点吗?

在我的课上:

menuButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Creating the instance of PopupMenu
            PopupMenu popup = new PopupMenu(getActivity(), menuButton);

            //Inflating the Popup using xml file
            popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
            //registering popup with OnMenuItemClickListener
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.one:
                                 // Some Stuffs
                            break;
                            case R.id.two:
                                // Some Stuffs
                            break;
                            default:
                            break;
                    }
                    return true;
                }
            });

我的 xml 文件是::

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fav_menu">
<group android:id="@+id/first_section" android:checkableBehavior="none" >
<item
    android:id="@+id/one"
    android:title="@string/sort"
    android:visible="true"

    />
</group>
<group android:id="@+id/first_two" android:checkableBehavior="none">
<item
    android:id="@+id/two"
    android:title="@string/sort"
    android:visible="true"
    />
</group>
</menu>

最佳答案

使用 SpannableString 很容易:

//### format text of popup-items ###
for(int i=0;i<popup.getMenu().size();i++){
    MenuItem tmpItem = popup.getMenu().getItem(i);
    String tmpText = tmpItem.getTitle().toString();
    SpannableString s = new SpannableString(tmpText);
    s.setSpan(new RelativeSizeSpan(1.4f), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    s.setSpan(new ForegroundColorSpan(Color.BLUE), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tmpItem.setTitle(s);
}
//##################################

关于android - 动态更改弹出菜单项的字体大小 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982016/

相关文章:

android - 在 Kotlin 中选择选项卡或滑动页面时如何加载 fragment

android - 卸载 Android 应用程序是否会终止配置的任何警报?

html - 如何将分隔符添加到使用 sprite 构建的菜单列表中?

android - 在android的cardlayout中添加溢出菜单项

wpf - 使用 MVVM 绑定(bind) WPF 菜单 - 查找错误

java - 从非 Activity 单例类获取应用程序上下文

android - 在 Xamarin 中处理按钮单击事件

android - 在android中突出显示 TextView

android - 如何在 LinearLayout 中设置 TextView 的文本?

android - 如何更改 ListView 中 TextView 的可见性