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)
隐藏toast的唯一方法是将ActionBar
菜单项设置为显示文本.android:showAsAction="withText"
.否则,即使没有为菜单项设置标题,toast也会添加每个操作项表示的内容.
可能最简洁的方法是为您的菜单项分配一个自定义操作视图,以模仿常规菜单项的外观。
既然您提到您使用的是 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。取决于你从这里拿走它。您想重新考虑并遵守这些准则。
您可以onLongClick
在ActionMenuItemView类中修改以在长按时停止Toasting.
但要注意,这只是工作的设备上使用API小于11,因为sherlockactionbar库通过检查你的设备API级别Build.VERSION.SDK_INT
,如果你有新的设备,它只是使用哪些你没有修改默认的系统动作条.
在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)
归档时间: |
|
查看次数: |
11297 次 |
最近记录: |