2

我需要创建一个自定义视图来在 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 中显示按钮的名称,就像它是非自定义视图中的操作一样。

tl;博士

总结一下:是否有一个属性/方法/属性可以设置为ImageButton,以使其表现为一个操作项并Toast在长按时显示一个,就像操作项一样?

4

2 回答 2

1

我想出了一个类似的问题(这是关于它的帖子),我想到了两种可能的解决方案:

  1. 以某种方式扩展 ActionMenuItemView,并使其布局包含它需要的内容,但禁止显示视图。将您自己的布局添加到它的布局中。这是一个相当混乱的解决方案。

  2. 在操作项的视图上使用 setOnLongClickListener,并调用为 ActionMenuItemView::onLongClick 调用的相同代码。这实际上是我在我创建的帖子上写的(这里

于 2013-12-18T12:54:43.757 回答
0

我认为您可以将项目添加到菜单 xml 并将 showAsAction 设置为“始终”,而不是执行所有这些操作。

于 2013-04-07T02:01:30.413 回答