SearchView不会填充整个宽度

时间:2016-07-31 09:54:31

标签: android layout menu searchview

我正在通过菜单将SearchView添加到我的工具栏:

<%= f.fields_for :image do |ff| %>
  <%= ff.label :image %> 
  <%= ff.file_field :image %>
<% end %>

我不知道为什么但是SearchView被移到了右边: Understanding the Table Service Data Model

任何想法为什么会发生这种情况?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,尝试以编程方式添加:

searchView.setMaxWidth( Integer.MAX_VALUE );

如果这不起作用,请尝试将<item>标记替换为<SearchView>

如果使用API​​ 20及更高版本,请执行此操作
将其添加到您的styles.xml文件中:

/*Theme name and parent can be different - depends on the one that already 
declared in you manifest under the tag <application> theme:AppTheme*/
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> /
    <item name="searchViewStyle">@style/SearchView</item>
</style>

<style name="SearchView" parent="Widget.AppCompat.SearchView">
    <item name="android:maxWidth">@dimen/maxSize</item>
</style>
<dimen name="maxSize">1000dp</dimen>

答案 1 :(得分:0)

我遇到了同样的问题,但在我的情况下,碰巧我在工具栏中(在布局文件中)有一个菜单抽屉图标图像,同时以编程方式启用了主页按钮

getSupportActionBar().setDisplayHomeAsUpEnabled(true)

将其设置为false(或删除此代码)会释放抽屉图标和SearchView的空间。希望这有助于某人。

答案 2 :(得分:0)

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.options_menu, menu)

    // Make SearchView fill screen width
    ((menu?.findItem(R.id.action_bar_search)?.actionView) as SearchView).apply {
        maxWidth = 1999
    }
    
    return true
}
  1. action_bar_search是菜单xml中项目ID的名称
  2. 最大宽度需要大于1000才能填充视图。 尽管文档未指定如何执行此操作,但他们有一个示例显示了如何访问maxWidth方法。

https://developer.android.com/training/search/setup#create-sc

相关问题