如何在操作栏中创建自定义进度条?

时间:2011-07-28 10:16:59

标签: java android progress-bar

这不是动作栏,而是创建我需要帮助的自定义进度条。我想创建一个完全像Catch Notes - https://ssl.gstatic.com/android/market/com.threebanana.notes/ss-480-0-9 https://market.android.com/details?id=com.threebanana.notes

我尝试过多次不同的方式。我看了很多教程,包括Android Dev Guide。我在这一点上非常生气。请问有人会给我一些帮助吗?

现在,我的操作栏正在调用通用进度条布局,并且工作正常。

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(R.layout.progress);
        return true;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:weightSum="1">

<ProgressBar android:id="@+id/progress" 
style="?android:attr/progressBarStyleSmall"  
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</ProgressBar>

</LinearLayout>

2 个答案:

答案 0 :(得分:2)

要显示进度条,您需要在ActionBar.displayOptions中启用ActionBar.DISPLAY_SHOW_CUSTOM。

Catch notes正在为其进度条使用自定义动画。我认为默认的Holo(正常大小)是一个合理的选择,但是为了得到类似于他们特定的东西,你需要创建一个animationDrawable。

http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

然后使用getCustomView()从ActionBar获取自定义视图,找到你的ImageView,然后开始动画制作。

答案 1 :(得分:1)

进度条周围的LinearLayout是不必要的;另外,请注意我在设置项目的操作视图后添加了“expandActionView()”。

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(R.layout.progress);
        item.expandActionView();
        return true;

在res / layout / progress.xml中有这个:

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/progressBarStyleSmall"  
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</ProgressBar>

从技术上讲,不需要布局:

switch (item.getItemId()) {
    case R.id.refresh:
        item.setActionView(new ProgressBar(this, null, android.R.attr.progressBarStyleSmall));
        item.expandActionView();
        return true;