在操作栏中添加“给我评分”按钮的问题

时间:2017-02-21 12:26:02

标签: android android-actionbar

起初我将rate me按钮编码为选项菜单的一部分,并且效果很好。

enter image description here

现在我想更加关注率我的功能。所以我在RateMe菜单main.xml中添加了一个图标。但是当我运行应用程序时,“我的速率”按钮仍然在菜单中,并且不会单独显示为按钮。

我错过了什么?

这是我的菜单main.xml:

    <menu xmlns:android="http://schemas.android.com/apk/res/android">


        <item android:id="@+id/settings"
            android:icon="@mipmap/action_search"
            android:title="@string/settings"
            android:showAsAction="ifRoom|withText"
            />

        <item android:id="@+id/RateMe"
            android:icon="@mipmap/ic_action_important"
            android:title="@string/RateMe"
            android:showAsAction="always"
            />

        <item android:id="@+id/about"
            android:icon="@mipmap/action_search"
            android:title="@string/about"
            android:showAsAction="ifRoom|withText" />

    </menu>

它在工作室中正确显示:

enter image description here

这是我的主要活动代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    menu.findItem(id.settings).setVisible(!drawerOpen);
    menu.findItem(id.about).setVisible(!drawerOpen);
    menu.findItem(id.RateMe).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Intent i;
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    switch(item.getItemId()) {
        case id.settings:
            i = new Intent(this, Settings.class);
            startActivity(i);
            return true;
        case id.about:
            i = new Intent(this, About.class);
            startActivity(i);
            return true;
        case id.RateMe:
            i = new Intent(this, RateMe.class);
            startActivity(i);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

这是我的主要布局文件:

 <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

和rate me文件(空):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_rate_me"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.bernard_zelmans.checksecurity.Activities.RateMe">

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

xmlns:app="http://schemas.android.com/apk/res-auto"

下方添加xmlns:android="http://schemas.android.com/apk/res/android"

并将所有android:showAsAction=替换为app:showAsAction=

喜欢:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">


    <item android:id="@+id/settings"
        android:icon="@mipmap/action_search"
        android:title="@string/settings"
        app:showAsAction="ifRoom|withText"
        />

    <item android:id="@+id/RateMe"
        android:icon="@mipmap/ic_action_important"
        android:title="@string/RateMe"
        app:showAsAction="always"
        />

    <item android:id="@+id/about"
        android:icon="@mipmap/action_search"
        android:title="@string/about"
        app:showAsAction="ifRoom|withText" />

</menu>

希望这有帮助。

答案 1 :(得分:0)

我不确定这是否会对你有所帮助。尝试将app:showAsAction="always|collapseActionView"添加到您的商品中。

<item android:id="@+id/RateMe"
      android:icon="@mipmap/ic_action_important"
      android:title="@string/RateMe"
      app:showAsAction="always|collapseActionView" />