Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android操作栏项目单击时的自定义下拉视图_Android_Android Actionbar_Android 3.0 Honeycomb - Fatal编程技术网

Android操作栏项目单击时的自定义下拉视图

Android操作栏项目单击时的自定义下拉视图,android,android-actionbar,android-3.0-honeycomb,Android,Android Actionbar,Android 3.0 Honeycomb,我正在为平板电脑编写一个Android应用程序。我用动作栏创建了我的图标。但是,单击其中一个菜单项时,我需要打开一个自定义视图 我不想要自定义操作栏-我需要在单击“浏览主题”操作栏项目时放大自定义视图。此视图需要显示为下拉列表,但将使用我自己的自定义布局,因为它不会用于导航 这是我的menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@

我正在为平板电脑编写一个Android应用程序。我用动作栏创建了我的图标。但是,单击其中一个菜单项时,我需要打开一个自定义视图

我不想要自定义操作栏-我需要在单击“浏览主题”操作栏项目时放大自定义视图。此视图需要显示为下拉列表,但将使用我自己的自定义布局,因为它不会用于导航

这是我的menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_browse"
        android:title="Browse Subjects"
        android:showAsAction="always"
        android:actionLayout="@layout/action_layout_browse"
        android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider"
            />
    <item android:id="@+id/menu_settings"
        android:title="Settings"
        android:orderInCategory="100"
        android:showAsAction="never" />
</menu>

我假设ActionProviderClass允许我在单击操作栏项时实例化一个自定义视图,但我找不出一个方法-也许我走错了路

在此方面的任何帮助都将不胜感激!谢谢

更新:
感谢链接到动作栏样式,但我不想简单地样式下拉列表。我想为自定义视图充气。视图还将执行数据库查询等。

好的,我自己制定了一个解决方案。actionProviderClass基本上用于在actionBar中实例化actionView。在这个类中,可以将onClick侦听器附加到膨胀的视图。我使用此侦听器在单击时在主框架中放大下拉视图

比如说

public class BaseProvider extends ActionProvider {

    protected final Context context;
    protected final int layout;
    protected final BaseProvider self;
    protected View view;
    protected int positionLeft = 0;
    protected Dropdown dropdown;

    public BaseProvider(Context context, int layout, Dropdown dropdown) {
        super(context);
        this.layout = layout;
        this.context = context;
        this.self = this;
        this.dropdown = dropdown;
    }

    @Override
    public View onCreateActionView() {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

        View view = inflater.inflate(this.layout, null);

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                self.onItemClick();
            }
        });
        this.view = view;
        return view;
    }

    public boolean onItemClick(){
        toggleDropdown();
        return true;
    }

    protected void toggleDropdown(){
        this.positionLeft = getRelativeLeft(view);
        DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft);
    }

    protected int getRelativeLeft(View view) {
        int[] loc = new int[2];
        view.getLocationOnScreen(loc);
        return loc[0];
    }
}

我正在寻找一个样本,你已经张贴在这里作为图像,你可以提供我任何样本的例子或提示如何创建自定义下拉菜单和动态添加菜单项在那里。用户界面看起来不错。你完成应用程序了吗?可以下载吗?如果你能提供你是如何完成下拉式课程的信息,那就太棒了。它是基于其他小部件还是仅仅是一个ListView?您是如何以及在哪里为ActionProvider中的项目附加onClick侦听器的?