我有一个带有3个菜单项的ActionBar。最后一个是刷新按钮。
刷新按钮设置...
setProgressBarIndeterminateVisibility(true);
setProgressBarVisibility(true);
...为true,显示ActionBar上的旋转进度图标。太好了!
但问题是它显示在所有其他图标前面。我希望它位于所有图标的右侧,因此我可以隐藏刷新按钮,以便在微调器可见时它看起来像替换刷新按钮。
我如何才能做到这一点?
答案 0 :(得分:1)
您需要制作自定义ActionBar布局并将进度条(设置为“不确定模式”)放置在您想要的任何位置。然后,根据您是否需要显示微调器来调用setProgressBarVisibility(true)
,而不是调用ProgressBar.setVisibility()
。
以下是我的应用自定义ActionBar布局的示例:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/app_name"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"/>
<ProgressBar
android:id="@+id/action_bar_progress_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:indeterminate="true"
android:layout_toStartOf="@id/search_view"
android:visibility="gone" />
<SearchView
android:id="@+id/search_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:title="@string/menu_search"
android:icon="@drawable/ic_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView"
android:layout_alignParentLeft="false"
android:queryHint="@string/menu_search_hint"
android:iconifiedByDefault="false"
android:layout_alignParentRight="true"/>
</RelativeLayout>
只需调整ProgressBar的位置,直到它到达您想要的位置。然后,在您的活动onCreate()
中设置布局:
ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.layout.activity_start_screen_actionbar);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);