我正在使用API级别10构建我的应用程序.但它可以在以后的版本中安装和使用.我只有在设备没有菜单按钮时才需要显示操作栏.例如,平板电脑,谷歌Galaxy Nexus手机等.人们建议使用hasPermanentMenuKey()函数.但它只能在API级别14之后才可用.任何人都可以建议我如何解决这个问题?
谢谢,Karthik
我必须在activity中动态地引用menu.xml中定义的项.
我尝试以下列方式推荐:
MenuItem homeItem = (MenuItem) findViewById(R.id.home);
homeItem.setIcon(R.drawable.home72);
Run Code Online (Sandbox Code Playgroud)
它引发了以下异常:
03-31 10:39:01.703: E/AndroidRuntime(2463): FATAL EXCEPTION: main
03-31 10:39:01.703: E/AndroidRuntime(2463): java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.view.Menu
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.emg.emgstorelocator.StoreLocatorActivity.onOptionsItemSelected(StoreLocatorActivity.java:133)
03-31 10:39:01.703: E/AndroidRuntime(2463): at android.app.Activity.onMenuItemSelected(Activity.java:2534)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:514)
03-31 10:39:01.703: E/AndroidRuntime(2463): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:99)
03-31 10:39:01.703: E/AndroidRuntime(2463): at android.view.View.performClick(View.java:4084)
03-31 10:39:01.703: E/AndroidRuntime(2463): at android.view.View$PerformClick.run(View.java:16966)
03-31 10:39:01.703: E/AndroidRuntime(2463): at android.os.Handler.handleCallback(Handler.java:615) …Run Code Online (Sandbox Code Playgroud) 如何加载菜单取决于按钮被点击?任何想法,解决方案?
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
menu.clear();
if(button.**isclicked**) {
getMenuInflater().inflate(R.menu.menu_main, menu);
} else {
getMenuInflater().inflate(R.menu.test, menu);
}
return true;
}
Run Code Online (Sandbox Code Playgroud) 我搜索并发现其他同样的问题,但我仍然无法解决操作栏中未显示的菜单项问题.我将发布我的动作条形码,menu_main.xml和MainActivity.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:minHeight="?attr/actionBarSize"
android:elevation="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PROJECT TIMELINE"
android:id="@+id/toolbar_title"
android:textStyle="bold"
android:textSize="20sp"
android:textColor="@color/ColorPrimaryDark" />
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
这是来自menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/search"
android:title="@string/Search"
android:icon="@drawable/ic_action"
app:showAsAction="ifRoom"
/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我在MainActivity.java中写了这个
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud) 我使用下面的代码添加checkbox在Android Action Bar:
<item
android:id="@+id/action_checkbox"
app:actionViewClass="android.widget.CheckBox"
android:title="@string/action_check"
app:showAsAction="always"
/>
Run Code Online (Sandbox Code Playgroud)
我如何获得上面的值,checkbox无论是否已Menu item在android中选择它?
android android-menu android-actionbar android-drawable android-background
我试图在每个菜单组之间显示一个分隔线。我已经尝试给每个组一个唯一的 ID,但这没有用。我找到了一些其他的解决方案,但它们看起来有点奇怪,比如创建一个高度为 1dp 的 LinearLayout。
这是 MENU 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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.marcelofb.cratediggersguide.MainActivity">
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/search_title"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom"/>
<item
android:id="@+id/searchOptions"
android:title="Tools"
android:icon="@android:drawable/ic_menu_manage"
app:showAsAction="always">
<group
android:id="@+id/radioGroupNovoUsado"
android:checkableBehavior="single">
<item
android:id="@+id/novo"
android:title="NOVO"
app:showAsAction="never" >
</item>
<item
android:id="@+id/usado"
android:title="USADO"
app:showAsAction="never" />
</group>
<group
android:id="@+id/radioGroupCompactoLP"
android:checkableBehavior="single">
<item
android:id="@+id/compacto"
android:title="COMPACTO"
app:showAsAction="never" />
<item
android:id="@+id/longplay"
android:title="LP"
app:showAsAction="never" />
</group>
<group
android:id="@+id/radioGroupNacionalImportado"
android:checkableBehavior="single">
<item
android:id="@+id/nacional"
android:title="NACIONAL"
app:showAsAction="never" />
<item
android:id="@+id/importado"
android:title="IMPORTADO"
app:showAsAction="never" />
</group>
</item>
Run Code Online (Sandbox Code Playgroud)
我创建了一个菜单,其中包含访问不同活动的意图,但我有一个奇怪的行为,它总是在选择语句后经过switch语句的所有情况,我已经查看了变量项的值并且是正确的,任何想法可能是错的?
表示菜单的代码片段是:
public static final int wiifidi = 0;
public static final int cuentaint = 1;
public static final int cajerosint = 2;
public static final int indicadoresint = 3;
public static final int promoint = 5;
public static final int contactoint = 4;
Run Code Online (Sandbox Code Playgroud)
....
....
....
@Override
//add the items to the menu on the class
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0,wiifidi, 0, R.string.menu_wifi);
menu.add(0,cuentaint, 0, R.string.menu_cuenta);
menu.add(0,cajerosint,0,R.string.menu_cajeros);
menu.add(0,indicadoresint,0,R.string.menu_indicadores);
menu.add(0,contactoint,0,R.string.menu_contacto);
menu.add(0,promoint,0,R.string.menu_promo);
return result;
}
@Override …Run Code Online (Sandbox Code Playgroud) 我在res/menu/mymenu.xml中有一个菜单项:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
android:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
但是当我按下菜单键时,菜单不会出现.它只显示在动作栏中.我也试过,android:showAsAction="never"但那个时间项目只显示在菜单键屏幕上.我想在操作栏和按菜单键时显示的屏幕中显示项目.提前致谢.
我试图ActionBar通过使用v7 AppCompat库来显示我的API 8模拟器,但它没有显示.甚至Split Action Bar也没有显示.用户必须单击菜单按钮才能显示选项.我需要4个选项才能始终在屏幕上显示.
编辑 ::
我有android:uiOptions="splitActionBarWhenNarrow",如果有帮助......
这是我的菜单xml代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:symagine="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_twitter"
android:icon="@drawable/ic_action_twitter_icon"
android:orderInCategory="1"
android:showAsAction="always"
symagine:showAsAction="always"
android:title="@string/twitter_desc"/>
<item
android:id="@+id/action_share"
android:icon="@drawable/ic_action_share"
android:orderInCategory="5"
android:showAsAction="always"
symagine:showAsAction="always"
android:title="@string/share_desc"/>
<item
android:id="@+id/action_rightDrawer"
android:icon="@drawable/ic_action_i"
android:orderInCategory="6"
android:showAsAction="always"
symagine:showAsAction="always"
android:title="@string/action_info"/>
<item
android:id="@+id/action_facebook"
android:icon="@drawable/facebook_icon"
android:orderInCategory="2"
android:showAsAction="always"
symagine:showAsAction="always"
android:title="@string/facebook_desc"/>
<item
android:id="@+id/action_contact"
android:orderInCategory="3"
android:showAsAction="collapseActionView"
symagine:showAsAction="collapseActionView"
android:title="@string/action_contact"/>
<item
android:id="@+id/about_us"
android:orderInCategory="4"
android:showAsAction="collapseActionView"
symagine:showAsAction="collapseActionView"
android:title="@string/action_about_us"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
这是我的HomeActivity代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it …Run Code Online (Sandbox Code Playgroud) android android-menu android-support-library android-actionbar-compat
我在android中有一个活动,应该使用谷歌地图api v2显示谷歌地图,顶部有一个菜单.地图看起来应该是这样,但菜单从来没有出现过某种原因.
我已经调试了应用程序,并且onCreateOptionsMenu(Menu menu)从不调用该方法.为什么是这样?
这是我的活动:
public class MapsActivity extends Activity {
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_maps, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar …Run Code Online (Sandbox Code Playgroud) 我用这种方式制作一个导航抽屉并在我的活动中展示它.然后我添加了一个Toolbar到我的基础布局.在这些步骤之后,我尝试这种方式在我的活动上显示三个点.(我在我的基本布局及其类中进行了所有更改).
然后我看到我的活动没有变化.我想我应该用另一种方法在基本活动中添加三个点.我该怎么办?
app_base_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:layoutDirection="rtl"
tools:openDrawer="right">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@android:color/white"
android:textSize="20sp"/>
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"/>
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="@dimen/nav_header_width"
android:layout_height="match_parent"
android:layout_gravity="right"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
AppBaseActivity.java大多是这样的(只有很小的变化).
android android-menu android-activity navigation-drawer android-toolbar
我AppCompat在教会应用程序中使用库,但我的菜单图标没有出现ActionBar.
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
case R.id.menu_item_share:
shareApp();
return true;
case R.id.menu_item_about:
Intent intentAbout = new Intent(MainActivity.this, AboutActivity.class);
startActivity(intentAbout);
return …Run Code Online (Sandbox Code Playgroud)