【问题标题】:action buttons only show in overflow in navigationmaterialdrawer library操作按钮仅显示在 navigationmaterialdrawer 库中的溢出中
【发布时间】:2015-08-02 07:05:45
【问题描述】:

我使用这个库 (NavigationMaterialDrawer) 来实现抽屉和管理帐户,但是当我向其中添加一些操作按钮时,即使始终考虑 showAsAction,操作按钮也只会显示在溢出菜单中

如您所见,我单击溢出菜单并看到了这一点。但我想在操作栏中看到搜索图标

这是我的代码

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.test_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    return super.onCreateOptionsMenu(menu);
}

初始化方法:

public void init(Bundle savedInstanceState) {


    View view = LayoutInflater.from(this).inflate(R.layout.custom_drawer,null);
    setDrawerHeaderCustom(view);


    this.addSection(newSection("Section 1", new FragmentIndex()));
    this.addSection(newSection("Section 2",new FragmentIndex()));
    this.addSection(newSection("Section 3", R.drawable.ic_mic_white_24dp,new FragmentButton()).setSectionColor(Color.parseColor("#9c27b0")));
    this.addSection(newSection("Section",R.drawable.ic_hotel_grey600_24dp,new FragmentButton()).setSectionColor(Color.parseColor("#03a9f4")));


    this.addBottomSection(newSection("Bottom Section",R.drawable.ic_settings_black_24dp,new Intent(this,Settings.class)));


getSupportActionBar().setDisplayShowTitleEnabled(false);
setTitle("TestTitle");


}

这是我的 test_menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"
    xmlns:MaterialNavigationDrawer="http://schemas.android.com/tools">
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@android:drawable/ic_search_category_default"
MaterialNavigationDrawer:showAsAction="always" />
</menu>

我将库导入到 android studio,因为我想为了解决这个问题,我必须重写一些类或 xml,但我不知道在哪里。对吗?

更新 我使用这个库的示例(Source)进行测试。

也许是因为我的主题! 我阅读了这个问题(Action bar buttons showing only in overflow (not extending ActionBarActivity))并删除了主题,但是没有主题的示例代码无法正常工作。它强制关闭了一行库。我将我的代码移动到另一个主题的示例(帐户灯)的另一个活动中,我遇到了同样的问题。然后我从中删除主题,但它也强制关闭:

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:124)
        at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)
        at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
        at it.neokree.materialnavigationdrawer.MaterialNavigationDrawer.onCreate(MaterialNavigationDrawer.java:361)

我想在将来使用主题!所以我不能完全删除主题。主题上的哪个元素必须更改或删除?

【问题讨论】:

  • 尝试android:showAsAction="always" 而不是MaterialNavigationDrawer:showAsAction="always" /&gt;
  • 如果我因为 appcompat 而使用它会出错。 android studio 提供给我使用 MaterialNavigationDrawer:ignore="AppCompatResource" 我使用这个但问题还没有解决。
  • @frgnvola 提到堆栈中的工作?你收到通知了吗?! :D
  • 是的,我收到了通知 :)。请改用android:showAsAction="always",因为您正在使用支持库。
  • @frgnvola 这对我不起作用 :) 我更新了我的帖子,请参阅问题底部 :)

标签: android android-actionbar themes material-design


【解决方案1】:

正如我已经提到的问题是主题! 在 MaterialNavigationModule>res>values>themes.xml 将样式的父级更改为

parent="Theme.AppCompat.NoActionBar

而不是

parent="Theme.AppCompat.Light.NoActionBar"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多