3

3つのメニュー項目を持つActionBarがあります。これらの最後の1つは、更新ボタンです。

更新ボタンは...を設定します

setProgressBarIndeterminateVisibility(true);
setProgressBarVisibility(true);

... trueにすると、アクションバーに回転中の進行状況アイコンが表示されます。素晴らしい!

しかし、問題は、他のすべてのアイコンの前に表示されることです。すべてのアイコンの右側に配置したいので、更新ボタンを非表示にして、スピナーが表示されているときに更新ボタンの代わりに表示されるようにします。

どうすればこれを達成できますか?

4

1 に答える 1

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);
于 2013-09-16T18:57:36.480 に答える