【问题标题】:Actionbar progress indicator and refresh button操作栏进度指示器和刷新按钮
【发布时间】:2012-05-20 19:31:17
【问题描述】:

是否可以显示进度指示器(使用 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 代替刷新按钮显示的进度指示器?

这个想法是像 Gmail 客户端一样工作:不加载时显示刷新按钮,加载时显示不确定的微调器代替刷新按钮

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    是的,您可以通过这种方式轻松完成。

    private MenuItem refresh;
    .
    .
    .
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.options_menu, menu);
    
        // refresh menu item
        refresh = menu.findItem(R.id.refresh_option_item);
    
        return super.onCreateOptionsMenu(menu);
    }
    

    您必须像上面一样获取刷新菜单项,然后,您可以启用如下所示的旋转项:

    refresh.setActionView(R.layout.actionbar_indeterminate_progress);
    

    当你的任务完成后,你可以像下面这样禁用旋转:

    refresh.setActionView(null);
    

    最后,actionbar_indeterminate_progress.xml 可以是这样的:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="64dp"
        android:layout_height="wrap_content"
        android:gravity="center">
        <ProgressBar android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_gravity="center"
            style="?android:attr/indeterminateProgressStyle" />
    </FrameLayout>
    

    【讨论】:

    • 这个问题是有时引用为空,你会得到 npe。不知道如何重现它,但它正在发生在我身上。我用了你同样的方法....
    • 最好使用 refresh.collapseActionView() 和 expandActionView() 并设置一次动作视图
    • 我遇到了这个问题:?android:attr/indeterminateProgressStyle 需要 API 级别 11。有什么方法可以让这个解决方案适用于 Api 10?
    • 我的问题是(我使用 Galaxy Nexus),当它改变状态时,它会从左向右移动一点。有人遇到过这个问题吗?
    • 针对 11 以下的 API 时,使用 MenuItemCompat.setActionView() 方法。
    【解决方案2】:

    您可以尝试以下操作:将刷新按钮和不确定的微调器都放在 FrameLayout 中,这样两者就堆叠在 z 平面上,显示在屏幕上的相同位置。然后你只需要使用可见性。当您想显示刷新按钮时,将微调器设置为不可见,将按钮设置为可见。如果要显示微调器,请将其设置为可见,将按钮设置为不可见。

    【讨论】:

    • 我知道如何手动布局,但我想在操作栏中执行此操作。
    • 我的回答对你有用吗?你甚至没有对此发表评论。 :)
    • 是否可以与广播意图交换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多