使Android ActionBar的ActionView的宽度与ActionBar的宽度相匹配

Hea*_*ers 1 android android-actionbar searchview

我想显示一个总是在我的扩展中的AutoCompleteTextViewActionBar.这是我的菜单xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/visibility_menu_search"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="always"
        android:actionLayout="@layout/visibility_search" />
</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的 layout/visibility_search.xml

<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/visibility_search_auto_complete_text_view" />
Run Code Online (Sandbox Code Playgroud)

这是我的活动:

public class VisibilityActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(layout.visibility_activity);
        getActionBar().setDisplayShowTitleEnabled(false);
    }

    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.visibility, menu);
        return super.onCreateOptionsMenu(menu);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用,showAsAction="always"因为我希望AutoCompleteTextView始终可见(这将是唯一的东西ActionBar).

AutoCompleteTextView总是在右边对齐ActionBar,只有100px的宽度.为什么是这样?

更新

感谢Atul O Holic的回答,我为我的案例找到了一个首选解决方案,它根本不需要任何特殊逻辑.我要离开我的答案是正确的,因为它适用于一般情况下,但对于我的具体情况,一个SearchView是更好,更容易.

Hea*_*ers 9

theelfismike的回答指出了我正确的方向,但我能够简化它.他链接的答案提到显示自定义视图ActionBar#setCustomView,而我正在尝试使用MenuItem#setActionView占据整个宽度的动作视图集.我的简化可能不适用于ActionBar自定义视图.

这是适合我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="wrap_content"
                android:layout_height="match_parent">
    <EditText xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/visibility_search_edit_text"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这隐藏了这个ActionBar头衔.与theelfismike相关的问题中的答案提到了这个问题,但我无法得到建议的解决方法.

此外,RelativeLayout似乎是动作视图的必需根.我尝试使用了LinearLayout许多不同组合的layout_gravitylayout_width,但我无法得到一个LinearLayout填充整个宽度.