我需要创建一个自定义视图来在Sherlock ActionBar中设置一个额外的Action。这是xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/edit"
style="@style/Widget.Sherlock.ActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_edit" />
</LinearLayout>
这是代码:
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, Gravity.RIGHT
| Gravity.CENTER_VERTICAL);
ActionBar actionbar = getSherlockActivity().getSupportActionBar();
actionbar.setCustomView(getSherlockActivity().getLayoutInflater()
.inflate(R.layout.top_sample_detail, null), lp);
actionbar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP
| ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM
| ActionBar.DISPLAY_SHOW_TITLE);
我可以通过定位edit
轻松找到actionbar.getCustomView().findViewById(R.id.edit)
按钮,但这不是问题所在。我想知道是否有一种默认的自动方式,可以在长时间点击后在Toast中显示按钮的名称,就像它是非自定义视图中的Action一样。
总结一下:是否存在可以设置为ImageButton
的属性/方法/属性,使其作为操作项运行并在长按下显示Toast
,与Action项目相同的方式?
答案 0 :(得分:1)
我提出了类似的问题(here's关于它的帖子),我想到了两个可能的解决方案:
以某种方式扩展ActionMenuItemView,并使其布局包含所需内容,但禁止显示视图。添加自己的布局到它布局。这是一个非常混乱的解决方案。
在操作项的视图上使用setOnLongClickListener,并调用为ActionMenuItemView :: onLongClick调用的相同代码。这实际上是我在帖子上写的(here)
答案 1 :(得分:0)
我认为您可以将项目添加到菜单xml并将showAsAction设置为&#34;始终&#34;而不是完成所有这些操作。