隐藏Toast以长按actionBar项目

Ada*_*oOo 17 android toast long-press actionbarsherlock android-actionbar

在长按ActionBar项目后,如何隐藏吐司有一些可行的方法吗?我没有设置该项目的标题,但它仍然存在 - 空的吐司.

<item
    android:id="@+id/ab_main_menu_dots"
    android:icon="@drawable/action_icons_dots"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/ab_main_menu_my_profile"
            android:showAsAction="never"
            android:title="@string/ab_my_profile">
        </item>
        <item
            android:id="@+id/ab_main_menu_settings"
            android:showAsAction="never"
            android:title="@string/menu_settings">
        </item>
        <item
            android:id="@+id/ab_main_menu_help"
            android:showAsAction="never"
            android:title="@string/tv_help_login">
        </item>
        <item
            android:id="@+id/ab_main_menu_about_us"
            android:showAsAction="never"
            android:title="@string/ab_about_us">
        </item>
        <item
            android:id="@+id/ab_main_menu_logout"
            android:showAsAction="never"
            android:title="@string/bt_logout_main">
        </item>
    </menu>
</item>
Run Code Online (Sandbox Code Playgroud)

har*_*ore 6

隐藏toast的唯一方法是将ActionBar菜单项设置为显示文本.android:showAsAction="withText".否则,即使没有为菜单项设置标题,toast也会添加每个操作项表示的内容.


MH.*_*MH. 5

可能最简洁的方法是为您的菜单项分配一个自定义操作视图,以模仿常规菜单项的外观。

既然您提到您使用的是 ActionBarSherlock,这里有一个简单的示例。

想象一下下面的menu.xml,它在Activity.

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/ab_main_menu_dots"
        android:actionLayout="@layout/ab_main_menu_dots_layout"
        android:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

你可以定义ab_main_menu_dots_layout.xml来模仿这样的溢出按钮:

<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/Widget.Sherlock.ActionButton.Overflow"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

结果是菜单项看起来像一个溢出按钮,并且Toast在您长按时不显示消息,无论是使用原生 ActionBar 还是 ABS。取决于你从这里拿走它。您想重新考虑并遵守这些准则。


Sad*_*egh 5

您可以onLongClickActionMenuItemView类中修改以在长按时停止Toasting.
但要注意,这只是工作的设备上使用API小于11,因为sherlockactionbar库通过检查你的设备API级别Build.VERSION.SDK_INT,如果你有新的设备,它只是使用哪些你没有修改默认的系统动作条.


mal*_*din 5

onCreateOptionsMenu计划任务中禁用 长按所需的菜单项。这是示例

    @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    inflater.inflate(R.menu.my_menu, menu);
    new Handler().post(new Runnable() {
        @Override
        public void run() {
            final View v = getActivity().findViewById(R.id.your_menu_item);
            if (v != null) {
                v.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        return false;
                    }
                });
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)