【问题标题】:Android: AppCompat v21 Menu item problemsAndroid:AppCompat v21 菜单项问题
【发布时间】:2014-12-22 15:02:02
【问题描述】:

我正忙于将现有应用更改为 Material Design,但我在操作栏内的菜单项方面遇到了问题。

首先,在某些活动中,我使用的是 searchview,但我已经读到您需要在 searchview 菜单 xml 中使用自定义前缀。所以我做到了:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item 
          android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search_light"
          android:title="Search"
          app:showAsAction="ifRoom|collapseActionView"
          app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>

但每次我收到错误时: "不使用 appcompat 库时应使用 android:showAsAction"

如果我将 app:showAsAction="ifRoom|collapseAction" 更改为 android:showAsAction="ifRoom|collapseActionView" 我没有得到一个占据整个操作栏长度的搜索视图,只是在放置项目的右上角有一些奇怪的正方形。这是我的 onCreateOptionsMenu 代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.searchview, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView search = (SearchView) MenuItemCompat.getActionView(searchItem);

    if(search != null)
    {   
        search.setOnQueryTextListener(new OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {

                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(search.getWindowToken(), 0);

                try {
                    new LoadResultsTask().execute(URLEncoder.encode(query, "UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    Toast.makeText(IndexerOverviewActivity.this, "Could not parse Query", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }

                return true;
            }

            @Override
            public boolean onQueryTextChange(String search) {
                return true;
            }
        });
    }
    search.setIconifiedByDefault(false);

    return super.onCreateOptionsMenu(menu);
}

我还注意到,当我在我的设备上启动我的应用程序时,我所有具有android:showsAsAction="always" 的操作栏菜单项都显示为android:showsAsAction="never"。所以我的第一个猜测是它与菜单 xml 文件中使用的前缀有关。

【问题讨论】:

    标签: android android-support-library android-appcompat android-menu


    【解决方案1】:

    Pffff,经过一次“清洁”后,它现在可以完美运行了......

    我花了 2 个小时才解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多