在操作栏中添加“给我评分”按钮时出现问题
Issue with adding a Rate me button in the action bar
起初我将评分按钮编码为选项菜单的一部分并且效果很好。
现在我想把更多的注意力放在评价我的功能上。所以我在 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>
它在工作室中正确显示:
这是我的主要活动代码:
@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>
我的评分文件(空):
<?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>
在下方添加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>
希望这对您有所帮助。
我不确定这是否对您有帮助。尝试将 app:showAsAction="always|collapseActionView"
添加到您的项目。
<item android:id="@+id/RateMe"
android:icon="@mipmap/ic_action_important"
android:title="@string/RateMe"
app:showAsAction="always|collapseActionView" />
起初我将评分按钮编码为选项菜单的一部分并且效果很好。
现在我想把更多的注意力放在评价我的功能上。所以我在 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>
它在工作室中正确显示:
这是我的主要活动代码:
@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>
我的评分文件(空):
<?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>
在下方添加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>
希望这对您有所帮助。
我不确定这是否对您有帮助。尝试将 app:showAsAction="always|collapseActionView"
添加到您的项目。
<item android:id="@+id/RateMe"
android:icon="@mipmap/ic_action_important"
android:title="@string/RateMe"
app:showAsAction="always|collapseActionView" />