ome*_*ega 6 android overflow android-actionbar android-support-library
我的Android应用程序支持2.2及更高版本.我正在使用appcompat支持库作为操作栏,所以它只应显示是否有不适合的东西.我希望我的操作栏支持溢出按钮(三个垂直方块),在单击时显示其他项目的菜单.
在我的菜单文件中,我设置了三个项目.但是在应用程序上我只看到其中两个,并且溢出按钮也没有显示.
activity_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:icon="@drawable/checkbox"
android:title="@string/action_settings"
sord.ids_connect:showAsAction="ifRoom" />
<item
android:id="@+id/action_settings2"
android:icon="@drawable/checkbox_checked"
android:title="@string/action_settings"
sord.ids_connect:showAsAction="ifRoom" />
<item
android:id="@+id/action_settings3"
android:icon="@drawable/ic_launcher"
android:title="@string/action_settings"
sord.ids_connect:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
java文件
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
public class Activity_Menu extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_menu, menu);
//return true;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
表现
<activity
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
android:name="sord.ids_connect.Activity_Menu"
android:screenOrientation="portrait"
android:label="@string/title_activity_menu" >
</activity>
Run Code Online (Sandbox Code Playgroud)
eOn*_*nOe 14
一般参考
1 - 覆盖onCreateOption并使菜单膨胀
注意
如果你返回true或者叫super,那没关系
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_menu, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
2 - 将命名空间添加到menu.xml文件中.
xmlns:**yourapp**="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)
3 - 将showAsAction设置为always或ifRoom
**yourapp**:showAsAction="ifRoom"
Run Code Online (Sandbox Code Playgroud)
4 - 如果您正在使用appcompat,请确保您的Activity扩展了ActionBarActivity,您不必更改ActionBar的任何值,以便能够在栏中看到menuOption.
最后你会有类似的东西[记得为yourapp使用一个合适的命名空间]
main.xml中
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:title="@string/action_settings"
yourapp:showAsAction="ifRoom" />
Run Code Online (Sandbox Code Playgroud)
在你的活动上
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是支持库,则需要从您自己的命名空间声明showAsAction; 看起来像这样app:showAsAction.你可以参考eOnOe的答案.
使用android:showAsAction将无法使用支持库,因为它使用它自己的操作栏实现而不是框架的实现.
您还可以始终将项目分组到图标中,例如:
<item ...
android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark">
<menu>
<item .../>
<item .../>
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
我在手机上进行测试,当我按下菜单按钮时,我看到菜单出现在底部,只有 1 个选项显示“设置”
这就是溢出。
另外,当我的菜单文件中有 3 个项目时,为什么只出现 1 个选项?
因为另外两个在操作栏中。您指定了ifRoom,并且有两个人的空间,而不是三个人。
| 归档时间: |
|
| 查看次数: |
22126 次 |
| 最近记录: |