我正在尝试在API版本8上实现操作栏(appcompatv_7)。尽管我的代码中没有错误但操作栏不会显示,而是按菜单按钮以文本格式显示。 这是java代码:
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) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
菜单代码:
<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.usingsherlockkk.MainActivity" >
<item
android:id="@+id/item1"
android:icon="@android:drawable/ic_menu_add"
android:showAsAction="ifRoom"
android:title="Title1">
</item>
<item
android:id="@+id/item2"
android:icon="@android:drawable/ic_menu_delete"
android:showAsAction="ifRoom"
android:title="Title2">
</item>
<item
android:id="@+id/reset"
android:icon="@android:drawable/ic_menu_revert"
android:showAsAction="ifRoom"
android:title="Revert">
</item>
<item
android:id="@+id/item4"
android:icon="@android:drawable/ic_menu_edit"
android:showAsAction="ifRoom"
android:title="Title4">
</item>
<item
android:id="@+id/item5"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="ifRoom"
android:title="Title5">
</item>
</menu>
清单文件代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.usingsherlockkk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light"
android:uiOptions="splitActionBarWhenNarrow" >
<activity
android:name="com.example.usingsherlockkk.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
伙计我的问题是所有菜单项都显示在溢出处,只显示标题。我用大/小屏幕设备检查了它,但它保持不变。 我希望我已经很好地解释了我的问题。如果有什么东西是模糊的,请告诉我
答案 0 :(得分:0)
试试此代码
@Override
protected void onCreate(Bundle arg0) {
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(arg0);
setContentView(R.layout.activity_main);
}
答案 1 :(得分:0)
好的家伙我得到了解决我自己问题的方法。 问题在于定义&#34; menu.xml&#34;中的操作项。 Android文档说你不能使用&#34; android:showAsAction&#34;在较旧的设备上,因为它在旧版本中不存在。您必须使用自定义命名空间。而不是说&#34; android:showAsAction&#34;,使用&#34; app:showAsAction&#34;你很高兴。以下是官方网页的附件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
使用支持库中的XML属性:
请注意,上面的showAsAction属性使用标记中定义的自定义命名空间。在使用支持库定义的任何XML属性时,这是必需的,因为旧设备上的Android框架中不存在这些属性。因此,您必须使用自己的命名空间作为支持库定义的所有属性的前缀。
我希望它可以帮助那些人。
答案 2 :(得分:0)
我这样做的方式如下:
AndroidManifest.xml
文件中有一行
android:theme="@style/AppTheme.NoActionBar"
我只是将其更改为
android:theme="@style/AppTheme"
问题解决了。