0

我为我的应用的操作栏创建了一个自定义布局。一切正常,除了我在onCreate()via中启用的 Indeterminate ProgressrequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);显示在我的自定义布局的右侧,并在出现时移动所有内容:

在此处输入图像描述

这是我的自定义操作栏布局:

<?xml version="1.0" encoding="utf-8"?>

<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"/>

    <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"
        />

    <ProgressBar
        android:id="@+id/progress_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleSmall"
        android:layout_centerVertical="true"
        android:indeterminate="true"
        android:layout_toStartOf="@id/search_view" />

</RelativeLayout>

我可以对ProgressBar我的自定义操作栏布局做些什么,以便requestWindowFeature()找到并使用它而不是默认布局?

4

1 回答 1

0

所以我想出了一个解决方案。我没有使用requestWindowFeature(),而是引用了我放置在 ActionBar 布局中的 ProgressBar 并将所有实例替换setProgressBarIndeterminateVisibility()setVisibility()

// Toggles progress spinner visibility when we conduct a search 
private void toggleIndeterminateSpinner(int state)
{
    // Indeterminate Progress Spinner
    ProgressBar progressSpinner = (ProgressBar) getActivity().findViewById(R.id.progress_spinner);

    switch(state)
    {
    case HIDE:
        progressSpinner.setVisibility(View.VISIBLE);
        break;
    case SHOW:
        progressSpinner.setVisibility(View.GONE);
        break;
    }
}
于 2013-09-03T17:21:33.713 回答